当前位置: 首页 > news >正文

排名轻松seo 网站国内开源平台

排名轻松seo 网站,国内开源平台,朝阳建设网站,网站禁止右键代码jdk1.8 ::构造函数JDK 8较不广为人知的新 功能之一是在已编译的Java类中包含参数元数据的可选功能[JDK增强建议#xff08; JEP #xff09; 118 ]。 此功能允许Java应用程序在运行时通过反射访问此参数元数据信息。 Java教程的Reflection API路径包括一个名为“ 获取方法参… jdk1.8 ::构造函数 JDK 8较不广为人知的新 功能之一是在已编译的Java类中包含参数元数据的可选功能[JDK增强建议 JEP 118 ]。 此功能允许Java应用程序在运行时通过反射访问此参数元数据信息。 Java教程的Reflection API路径包括一个名为“ 获取方法参数的名称”的课程该课程讨论并演示了如何在Java 8中应用此新功能。该课程包括一个示例Java类MethodParameterSpy 可以对提供的Java类运行该类以指示特征方法和构造函数参数。 本课还强调这是一项可选功能因为在.class文件中存储其他参数元数据会增加这些文件的大小。 该课程还指出在某些情况下参数名称包含开发人员不希望在已编译的.class文件中使用的敏感信息。 通过将-parameters选项传递给javac编译器可以将其他参数元数据包含在用Java 8编译的.class文件中。 当一个人键入javac -help时也会显示此-parameters选项如下一个屏幕快照所示。 javac上的Oracle TechNotes页面指示如何在运行时访问此附加的方法/构造函数参数数据“将构造函数和方法的形式参数名称存储在生成的类文件中以便从中获取方法java.lang.reflect.Executable.getParameters Reflection API可以检索它们。” 以下代码片段名为ParameterDisplayer类对此进行了演示重点在displayParametersMetadata(String[])方法上。 ParameterDisplayer.java package dustin.examples.jdk8;import static java.lang.System.out; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Parameter;/*** Uses JDK 8 Parameter class to demonstrate metadata related to the parameters* of the methods and constructors of the provided class (includes private,* protected, and public methods, but does not include methods inherited from* parent classes; those classes should be individually submitted).* * author Dustin*/ public class ParameterDisplayer {private static void displayParametersMetadata(final String[] classesNames){for (final String className : classesNames){try{final Class clazz Class.forName(className);// Get all classs declared methods (does not get inherited methods)final Method[] declaredMethods clazz.getDeclaredMethods();for (final Method method : declaredMethods){writeHeader(Method method.toGenericString() has method.getParameterCount() Parameters:);int parameterCount 0;final Parameter[] parameters method.getParameters();for (final Parameter parameter : parameters){out.println(\targ parameterCount : (parameter.isNamePresent() ? parameter.getName() : Parameter Name not provided,) (isParameterFinal(parameter) ? IS : is NOT ) final, type parameter.getType().getCanonicalName() , and parameterized type of parameter.getParameterizedType() and (parameter.isVarArgs() ? IS : is NOT ) variable. );}}}catch (ClassNotFoundException cnfEx){out.println(Unable to find class className);}}}private static void writeHeader(final String headerText){out.println(\n);out.println( headerText);out.println();}/*** Indicate whether provided Parameter is final.* * param parameter Parameter to be tested for final modifier.* return {code true} if provided Parameter is final.*/private static boolean isParameterFinal(final Parameter parameter){return Modifier.isFinal(parameter.getModifiers());}public static void main(final String[] arguments){if (arguments.length 1){out.println(You must provide the fully qualified name of at least one class.);System.exit(-1);}displayParametersMetadata(arguments);} } 我最初考虑过针对JDK的知名类运行此类但意识到这并不太有用因为这些类不太可能是使用-parameters选项构建的。 因此我创建了一个简单的示例类来辅助演示。 它称为ManyMethods然后显示。 ManyMethods.java package dustin.examples.jdk8;import java.util.List;/*** Class with numerous methods intended to be used in demonstrating JDK 8s new* Parameter class.* * author Dustin*/ public class ManyMethods {public ManyMethods() {}private void addArrayOfStrings(String[] strings) {}private void addManyStrings(final String ... strings) {}private void addListOfStrings(final ListString strings) {}Overridepublic String toString(){return ManyMethods;} } 接下来的两个屏幕快照演示了在不使用-parameters选项和使用-parameters选项编译的ManyMethods实例上运行ParameterDisplayer的ManyMethods 。 最显着的区别是不使用-parameters选项进行编译时不提供参数名称。 另外如果没有-parameters选项则在编译时参数是否为final时也没有可信信息。 在不使用-parameters进行编译的情况下无论-parameters是否为final Parameter.getModifiers方法均不包含final 。 ParameterDisplayer类使用Parameter.isNamePresent以编程方式标识不存在参数名称当未使用-parameters选项进行编译时。 如果未进行检查则Parameter.getName返回的参数名称将为“ arg”加上参数编号第一个参数为arg0第二个参数为arg1依此类推。 ManyMethods类中的三个方法中有一个具有参数的方法中的ManyMethods具有该参数的final修饰符。 仅当使用-parameters选项编译类时才可以通过使用Parameter.getModifiers进行反射来正确识别这些情况。 略有相关的旁注Sun / Oracle工具文档始终由“ Windows”页面和“ solaris”页面组成后者通常用于描述特定工具如何在Linux和Unix上的所有版本上工作。 我注意到Java 8文档对此进行了更改。 该文档仍然具有“ windows”版本但是Unix / Linux版本现在其URL中具有“ unix”。 为了说明这一点这里是Java SE 7和Java SE 8 javac工具页面的URL http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html http://docs.oracle.com/javase/8/docs/technotes/tools/unix/javac.html http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html 回到新的带有Java 8 参数类值得注意的是存储此附加参数元数据的已编译.class文件有所增加。 对于上面显示的我的ManyMethods类 .class文件从909字节扩大到961字节。 像Method一样 构造 方法扩展了Executable 因此Constructor类享有与Method相同的getParameters方法。 当使用这些额外信息显式编译代码时Java 8将提供有关方法和构造函数参数的更多详细信息。 翻译自: https://www.javacodegeeks.com/2014/04/constructormethod-parameters-metadata-available-via-reflection-in-jdk-8.htmljdk1.8 ::构造函数
http://www.pierceye.com/news/660966/

相关文章:

  • 常德做网站公司哪家好雷达图 做图网站
  • 做网站的环境配置wordpress手机版本
  • 市场网站建设济南智能网站建设
  • 淄博网站的优化大数据开发过程
  • 德阳网站建设公司做抢单软件的网站
  • 金融类的网站怎么做地方门户网站建设多少钱
  • 网站建设周末培训长春网站建设服务
  • 网站宝建站助手呼市地区做网站公司
  • 网站开发需要用到哪些设备建立网站得多少钱
  • 广州最好网站策划外网网站有什么好的推荐
  • 企业营销型企业网站建设cpa推广联盟平台
  • 南山区公司网站制作网站建设都 包括哪些
  • 域名备案网站建设方案公司网站设计怎么做
  • wordpress网站地图生成插件门户网站管理流程
  • 网站设计工程师培训关键词排名优化公司外包
  • 做电影资源网站手机版交通运输部: 优化交通运输领域防控
  • 找人做微信网站无锡响应式网站
  • 温州手机网站制作联系电话装修公司加盟条件
  • 网站后台模板html5淄博桓台网站建设公司
  • 开发app和网站的公司网站开发项目流程图模板
  • 深圳优秀网站建设品牌策略
  • 上海市建设机械行业协会网站石家庄最新招聘
  • Wordpress垂直类目站模版建设官网入口
  • 网站建设发布平台网络界面设计
  • rss 网站插件国内哪个网站做水产比较大
  • 做营销看的网站有哪些内容芜湖做网站推广有哪些公司
  • 网站建设岗位说明新网金商网站
  • 网站域名使用费多少正规抖音代运营公司排名
  • 网站建设后需要交费吗物流公司电话
  • 网站建设 福州wordpress静态文件目录下