码迷,mamicode.com
首页 > 编程说话 > 详细

Java8获得参数名及Idea/Eclipse/Maven设备

时间:2018-01-19 19:57:54      浏览:19341      评论:0      收藏:0      [点我收藏+]

标签:e30   div   addition   XML   pom.xml   href   tar   遍历   就会   

在Java8之前,代码编译为class文件后,办法参数的类型固定,然则办法称号会损掉,办法称号会变成arg0、arg1....。而如今,在Java8开端可以在class文件中保存参数名,这就给反射带来了极大年夜的遍历。像mybatis等须要应用反射机制获得办法参数的时辰便可以不消像之前一样须要应用类似于@Para之类的注解。

功能测试

代码参考自,点击进入

  1. 编写测试类

    import java.lang.reflect.Method;
    import java.lang.reflect.Parameter;
    
    public class GetRuntimeParameterName {
        public void createUser(String name, int age, int version) {
    
        }
    
        public static void main(String[] args) throws Exception {
            for (Method m : GetRuntimeParameterName.class.getMethods()) {
                System.out.println("--------------------");
                System.out.println(" method: " + m.getName());
                System.out.println(" return: " + m.getReturnType().getName());
                for (Parameter p : m.getParameters()) {
                    System.out.println("parameter:" + p.getType().getName() + ", " + p.getName());
                }
            }
        }
    }
  2. 测试
    由于为了防止.class文件由于保存参数名而招致.class文件过大年夜或许占用更多的内存,别的也防止有些参数(secrect/password)泄漏安然信息,JVM即使时1.8默许是不会保存参数称号的。
    所以我们这里正常可以测试编译保存参数名和不保存参数名的情况。
    • 不保存参数称号
      编译敕令:

      javac GetRuntimeParameterName.java

      输入成果:

      --------------------
      method: createUser
      return: void
      parameter:java.lang.String, arg0
      parameter:int, arg1
      parameter:int, arg2
    • 保存参数名
      编译敕令:

      javac -parameters GetRuntimeParameterName.java

      输入成果:

      --------------------
      method: createUser
      return: void
      parameter:java.lang.String, name
      parameter:int, age
      parameter:int, version

IDE和Maven开启-parameters的办法

Eclipse中开启的办法

Preferences->java->Compiler下勾选Store information about method parameters选项。
如许在应用eclipse编译java文件的时辰就会将参数称号编译到class文件中。

Idea中开启的办法

File->Settings->Build,Execution,Deployment->Java Compiler下的Additional command line parameters选项中添加-parameters
技巧分享图片

Maven中开启的办法

在pom.xml的编译插件中增长参数设备<arg>-parameters</arg>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <compilerArgs>
            <arg>-parameters</arg>
        </compilerArgs>
    </configuration>
</plugin>

别的附上测试应用Maven install敕令编译class文件的情况:
应用maven install编译生成jar包时:

  1. 假设target/classes下class文件关于源码文件都没有修改,不会重新编译,直接打包classes下的class文件;
  2. 假设target/classes下class文件关于源码文件都有修改,会重新编译一切class文件,然后打包classes下的class文件;

Java8获得参数名及Idea/Eclipse/Maven设备

标签:e30   div   addition   XML   pom.xml   href   tar   遍历   就会   

原文地址:https://www.cnblogs.com/liuchengcc/p/8318350.html

(2)
(12)
   
告发
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权一切 京ICP备13008772号-2
迷上了代码!