时间:2021-05-20
本文实例讲述了Java 8新增的方法参数反射。分享给大家供大家参考,具体如下:
一 点睛
Java 8在java.lang.reflect包下新增了一个Executable抽象基类,该对象代表可执行的类成员,该类派生了Constructor、Method两个子类。
Executable基类提供了大量方法来获取修饰该方法或构造器的注解信息;还提供了isVarArgs()方法用于判断该方法或构造器是否包含数量可变的形参,以及通过getModifiers()方法来获取该方法或构造器的修饰符。除此之外,Executable提供了如下两个方法来获取该方法或参数的形参个数及形参名。
int getParameterCount():获取该构造器或方法的形参个数。
Parameter[] getParameters():获取该构造器或方法的所有形参。
上面第二个方法返回了一个Parameter[]数组,Parameter也是Java 8新增的API,每个Parameter对象代表方法或构造器的一个参数。Parameter也提供了大量方法来获取声明该参数的泛型信息。
二 实战
1 代码
import java.lang.reflect.*;import java.util.*;class Test{ public void replace(String str, List<String> list){}}public class MethodParameterTest{ public static void main(String[] args)throws Exception { // 获取String的类 Class<Test> clazz = Test.class; // 获取String类的带两个参数的replace()方法 Method replace = clazz.getMethod("replace" , String.class, List.class); // 获取指定方法的参数个数 System.out.println("replace方法参数个数:" + replace.getParameterCount()); // 获取replace的所有参数信息 Parameter[] parameters = replace.getParameters(); int index = 1; // 遍历所有参数 for (Parameter p : 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>java MethodParameterTest
replace方法参数个数:2
---第1个参数信息---
参数名:str
形参类型:class java.lang.String
泛型类型:class java.lang.String
---第2个参数信息---
参数名:list
形参类型:interface java.util.List
泛型类型:java.util.List<java.lang.String>
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java利用反射自动封装成实体对象的方法。分享给大家供大家参考。具体分析如下:利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属
本文实例讲述了java反射getClass.class的使用方法。分享给大家供大家参考,具体如下:java反射机制怎么从一个实例上的获得类反射/***obj实例
阅读目录Java反射API通过反射创建实例对象通过反射调用私有方法关于javap工具参考资料Java反射APIJava反射指的是在运行状态时,能够获取类的属性和
一、java中的反射1.通过反射加载类的属性和方法实例代码:/***java.lang.Class是反射的源头*我们创建了一个类,通过编译(javac.exe)
以往都是使用反射调用实例方法,那么反射如何调用静态方法呢?看下面的例子ClassthreadClazz=Class.forName("java.lang.Mat