Java 反射中的 Method 类
Java 反射中的 Method 类
在 Java 反射机制中,Method 类(位于 java.lang.reflect 包中)用于表示类的方法。通过 Method 对象,你可以在运行时动态地调用类的方法,即使这些方法在编译时未知。这对于需要高度灵活性和动态行为的程序(如框架、测试工具和动态代理)非常有用。
Method 类的核心功能
获取方法信息:
可以获取方法的名称、返回类型、参数类型、修饰符等信息。
动态调用方法:
可以在运行时通过 Method 对象调用对应的方法。
处理可变参数(Varargs):
可以正确处理方法的可变参数(如 String...
处理泛型方法:
可以通过反射处理泛型方法,尽管泛型类型信息在运行时会被擦除。
获取 Method 对象
要获取 Method 对象,通常使用 Class 类的以下方法:
getMethod(String name, Class<?>... parameterTypes):
获取类的公共方法(包括从父类继承的公共方法)。
参数 name 是方法名,parameterTypes 是方法参数类型的 Class 对象数组。
getDeclaredMethod(String name, Class<?>... parameterTypes):
获取类自身声明的所有方法(包括私有方法,但不包括从父类继承的方法)。
参数与 getMethod 相同。
调用方法
使用 Method 对象的 invoke(Object obj, Object... args) 方法可以动态调用方法:
obj:调用该方法的对象实例(对于静态方法,可以传入 null)。
args:调用方法时传递的参数。
示例代码
以下是一个完整的示例,展示如何使用 Method 类来动态调用方法:
java
import java.lang.reflect.Method;
class Calculator {
public int add(int a, in