Java 反射中的 Method 类

2025-05-11ASPCMS社区 - fjmyhfvclm

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

全部评论