JDK1.8的方法参数反射
在看李刚著的《疯狂java讲义》 反射这一部分介绍了非常多的新特性,让我大呼:原来还能这样操作?于是赶紧记录下来
Java8在java.lang.reflect包下新增了一个Executable抽象基类,该对象代表可执行的类成员,该类派生了Constructor和Method俩子类
Executable基类提供了大量的方法来获取修饰该方法或构造器的注解信息;还提供了isVarArgs ()方法用于判断该方法或构造器是否包含可变数量的形参,以及通过getModifiers()方法来获取该方法或构造函器的修饰符,除此之外Executable提供了如下俩个方法来获取该方法或该参数的形参个数以及形参名。
Int getParameterCount(): 获取该构造器或方法的形参个数
Parameter[] getParameters(): 获取该构造器或方法的所有形参
上面第二个方法烦恼会了一个Parameter[]数组,Parameter也是java8新增的API,每个Parameter对象就代表方法或者构造器的一个参数,parameter也提供了大量的方法来获取声明该变量的泛型信息,还提供了如下常用方法来获取参数信息。
>getModifiers() 获取修饰该形参的修饰符
>String getName(): 获取新参名
>Type getParameterizedType(): 获取带泛型的新参类型
>Class<?> getType(): 获取形参类型
>boolean isNamePresent(): 该方法返回该类的class文件中是否包含了方法的形参名信息
>boolean iaVarArgs(): 该方法用于判断该参数是否为可变形参