博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java8获取参数名称
阅读量:2219 次
发布时间:2019-05-08

本文共 1369 字,大约阅读时间需要 4 分钟。

Java8获取参数名称

前言

在mybatis的源码学习中,知道了mybatis可以开始在Java8将参数名称作为映射名称,Java8一项新的特性——在class文件中保留参数名。

通过反射获取参数名称

Java8中反射包出现了新的方法,Method.getParameters(),可以获取Parameter数组。而以前只能使用Method.getParameterTypes()获取Class数组。

import java.lang.reflect.Method;import java.lang.reflect.Parameter;public class TestMethodParams {    public String test(String name, int age) {        return name;    }    public static void main(String[] args) throws NoSuchMethodException, SecurityException {        Method method = TestMethodParams.class.getMethod("test",String.class,int.class);        for (Parameter p : method.getParameters()) {            System.out.println("parameter: " + p.getType().getName() + ", " + p.getName());        }    }}

 

如果我们不做其他设置,我们可以得到以下结果

parameter: java.lang.String, arg0

parameter: int, arg1
1
2
这是因为Java8必须得打开编译开关才能使用,打开之后结果如下:

parameter: java.lang.String, name
parameter: int, age
javac编译器

使用原生编译器javac,直接使用javac -parameters ***.java,得到的class文件将保留参数名称。

Eclipse

Window->Preferencces->Java->Compiler 然后勾选红框选中值

这里写图片描述

Idea

File->Setting

这里写图片描述

 Build,Execution,Deployment->Java Compiler 在框内填写-parameters参数

这里写图片描述

 

Maven
在pom.xml的中添加编译插件

<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>
 

你可能感兴趣的文章
mark一下,service的实现层没有加@service注解。
查看>>
jq对象转换成js对象。已经jq的复合选择器。
查看>>
(一)alin‘s mysql学习笔记----概述
查看>>
(二)alin’s mysql学习笔记----mysql的存储引擎
查看>>
(三)alin’s mysql学习笔记----常用的join连接查询
查看>>
(四)alin’s mysql学习笔记----索引简介
查看>>
分布式系统中的幂等性的理解
查看>>
spring的注解开发中的常用注解(一)------@bean @Configuration @ComponentScan @Import @Scope @Lazy
查看>>
(五)alin’s mysql学习笔记----索引性能分析
查看>>
Spring中使用@Transactional注解进行事务管理的时候只有应用到 public 方法才有效
查看>>
springboot整合rabbitmq及rabbitmq的简单入门
查看>>
mysql事务和隔离级别笔记
查看>>
事务的传播属性(有坑点)自调用失效学习笔记
查看>>
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
查看>>
动态代理实现AOP
查看>>
23种常见的java设计模式
查看>>
关于被final修饰的基本数据类型一些注意事项
查看>>
java Thread中,run方法和start方法的区别
查看>>
在 XML 中有 5 个预定义的实体引用
查看>>
XML 元素是可扩展的
查看>>