技术栈

2019-03-18——Java反射 Parameter

2019-03-19  本文已影响0人  烟雨乱平生

Parameter类主要用于在程序运行状态中,动态地获取参数信息,包括参数名、修饰符、参数类型、参数化类型、可变参数、注解。

在jdk8之前,编译器会忽略我们编写代码时设定的参数名,因此会得到像 arg0、arg1 这样无意义的参数名,比如:当我们使用 mybatis 时,我们可能会用到 @Param 注解来使 mybatis 保留参数名称

Maven编译插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <compilerArgument>-parameters</compilerArgument>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

常用方法说明

方法 说明
getDeclaringExecutable() 获取该参数的可执行对象,一般是该参数所在的方法或构造函数
getModifiers() 返回修饰该参数对象修饰符的整数形式,使用 Modifier 类对其进行解码
getName() 返回参数对象名称
getParameterizedType() 返回该参数对象表示的参数化类型的参数 (即泛型)
getType() 获取该参数对象的声明类型参数对象,会擦除泛型
isImplicit() 如果该参数对象为隐式参数,则返回true,否则为false。java编译器会为内部类的构造方法创建一个隐式参数
isNamePresent() 如果该参数对象根据类文件有名称,则返回true,否则为false,当我们编译时带上 -parameters 参数时,该参数对象就有了名称
isSynthetic() 如果该参数对象为合成参数,则返回true,否则为false
isVarArgs() 如果该参数对象表示 可变参,则返回true,否则为false
上一篇下一篇

猜你喜欢

热点阅读