Java 8新增的方法参数反射实例分析
本文实例讲述了Java8新增的方法参数反射。分享给大家供大家参考,具体如下:
一点睛
Java8在java.lang.reflect包下新增了一个Executable抽象基类,该对象代表可执行的类成员,该类派生了Constructor、Method两个子类。
Executable基类提供了大量方法来获取修饰该方法或构造器的注解信息;还提供了isVarArgs()方法用于判断该方法或构造器是否包含数量可变的形参,以及通过getModifiers()方法来获取该方法或构造器的修饰符。除此之外,Executable提供了如下两个方法来获取该方法或参数的形参个数及形参名。
intgetParameterCount():获取该构造器或方法的形参个数。
Parameter[]getParameters():获取该构造器或方法的所有形参。
上面第二个方法返回了一个Parameter[]数组,Parameter也是Java8新增的API,每个Parameter对象代表方法或构造器的一个参数。Parameter也提供了大量方法来获取声明该参数的泛型信息。
二实战
1代码
importjava.lang.reflect.*;
importjava.util.*;
classTest
{
publicvoidreplace(Stringstr,Listlist){}
}
publicclassMethodParameterTest
{
publicstaticvoidmain(String[]args)throwsException
{
//获取String的类
Classclazz=Test.class;
//获取String类的带两个参数的replace()方法
Methodreplace=clazz.getMethod("replace"
,String.class,List.class);
//获取指定方法的参数个数
System.out.println("replace方法参数个数:"+replace.getParameterCount());
//获取replace的所有参数信息
Parameter[]parameters=replace.getParameters();
intindex=1;
//遍历所有参数
for(Parameterp:parameters)
{
if(p.isNamePresent())
{
System.out.println("---第"+index+++"个参数信息---");
System.out.println("参数名:"+p.getName());
System.out.println("形参类型:"+p.getType());
System.out.println("泛型类型:"+p.getParameterizedType());
}
}
}
}
2运行
E:\Java\疯狂java讲义\codes\18\18.3>javac-parameters-d.MethodParameterTest.java
E:\Java\疯狂java讲义\codes\18\18.3>javaMethodParameterTest
replace方法参数个数:2
---第1个参数信息---
参数名:str
形参类型:classjava.lang.String
泛型类型:classjava.lang.String
---第2个参数信息---
参数名:list
形参类型:interfacejava.util.List
泛型类型:java.util.List
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。