反射
通过Java的反射机制,可以在程序中访问已经装载到JVM中的Java对象的描述,实现访问,检测和修改描述Java对象本身信息的功能。通过反射可以访问构造方法,成员变量,和成员方法。
访问构造方法:Java反射——访问构造方法
访问成员变量:Java反射——访问成员变量
访问成员方法
利用Method对象可操纵相应的方法。

Method类提供的常用方法
| 方法 | 说明 |
|---|---|
| getName() | 获取该方法的名称 |
| getParameterTypes() | 按照声明顺序以Class数组的形式获得该方法的各个参数的类型 |
| getReturnType() | 以Class对象的形式获得该方法的返回值类型 |
| getExceptionTypes() | 以Class数组的形式获得该方法可能抛出的异常类型 |
| invoke(Object obj, Object … args) | 利用指定参数args执行指定对象obj中的该方法,返回值为Object型 |
| isVarArgs() | 查看该构造方法是否允许带有可变数量的参数,如果允许返回true,不允许返回false |
| getModifiers() | 获得可以解析出该方法所采用修饰符的整数 |
getModifiers()方法的返回值是所表示的修饰符信息,在该类中提供了一系列用来解析的静态方法,既可以查看是否被指定的修饰符修饰,还可以以字符串的形式获得所有修饰符。
Modifier类中的常用解析方法:
| 静态方法 | 说明 |
|---|---|
| isPublic(int mod) | 查看是否被public修饰符修饰,如果是返回true,反之返回false |
| isProtected(int mod) | 查看是否被protected修饰符修饰,如果是返回true,反之返回false |
| isPrivate(int mod) | 查看是否被private修饰符修饰,如果是返回true,反之返回false |
| isStatic(int mod) | 查看是否被static修饰符修饰,如果是返回true,反之返回false |
| isFinal(int mod) | 查看是否被Final修饰符修饰,如果是返回true,反之返回false |
| toString(int mod) | 以字符串形式返回所有修饰符 |
写个例子,来反射一个类里有多少个方法,拿java.lang.String来举例子。
public class Study2 {
public static void main(String[] args) {
try {
Class c = Class.forName("java.lang.String");// 创建class对象
Method ms[] = c.getDeclaredMethods();// 获得所有的方法
for (Method m : ms) {
System.out.print(Modifier.toString(m.getModifiers()) + " ");// 获取所有方法的修饰符
System.out.print(m.getReturnType()

本文探讨了Java反射机制中如何访问成员方法。通过Method对象,可以获取并操纵类的方法信息,包括修饰符、方法名、返回类型及参数。文章提供了Modifier类解析修饰符的方法,并给出示例展示如何输出类中的所有方法及其详细信息。同时,介绍了如何通过反射调用类的成员方法,例如计算两个数之和的操作。
最低0.47元/天 解锁文章
802

被折叠的 条评论
为什么被折叠?



