当前位置:实例文章 » JAVA Web实例» [文章]Java反射getMethod和getDeclaredMethod区别

Java反射getMethod和getDeclaredMethod区别

发布人:shili8 发布时间:2025-02-20 00:36 阅读次数:0

**Java 反射:GetMethod 和 GetDeclaredMethod 的区别**

在 Java 中,反射是指程序可以在运行时动态地操作类或对象的能力。通过反射,可以获取一个类的所有成员变量、方法等信息,并且可以在运行时调用这些方法。GetMethod 和 GetDeclaredMethod 是两个常用的反射方法,它们都用于获取一个类的方法,但它们有着不同的区别。

**GetMethod**

GetMethod 方法用于获取一个类的公共方法(包括继承而来的公共方法)。它会返回一个 Method 对象,表示该类的一个公共方法。GetMethod 的使用场景如下:

* 获取一个类的所有公共方法* 在运行时动态地调用一个类的公共方法下面是一个示例代码:

javaimport java.lang.reflect.Method;

public class Test {
 public static void main(String[] args) throws Exception {
 // 获取Test类的getMethod()方法 Method method = Test.class.getMethod("main", String[].class);
 // 在运行时动态地调用main()方法 method.invoke(null, new Object[]{});
 }
}

在这个示例中,我们使用GetMethod 方法获取了 Test 类的 main() 方法,然后在运行时动态地调用了该方法。

**GetDeclaredMethod**

GetDeclaredMethod 方法用于获取一个类或接口声明的方法(包括继承而来的私有方法)。它会返回一个 Method 对象,表示该类或接口的一个方法。GetDeclaredMethod 的使用场景如下:

* 获取一个类或接口的所有方法* 在运行时动态地调用一个类或接口的方法下面是一个示例代码:
javaimport java.lang.reflect.Method;

public class Test {
 public static void main(String[] args) throws Exception {
 // 获取Test类的getDeclaredMethod()方法 Method method = Test.class.getDeclaredMethod("main", String[].class);
 // 在运行时动态地调用main()方法 method.invoke(null, new Object[]{});
 }
 private static void testPrivateMethod() {
 System.out.println("这是一个私有方法");
 }
}

在这个示例中,我们使用GetDeclaredMethod 方法获取了 Test 类的 main() 和 testPrivateMethod()两个方法,然后在运行时动态地调用了这两个方法。

**GetMethod 和 GetDeclaredMethod 的区别**

GetMethod 和 GetDeclaredMethod 都用于获取一个类或接口的方法,但它们有着不同的区别:

* GetMethod 只能获取公共方法,而GetDeclaredMethod 可以获取所有方法(包括继承而来的私有方法)。
* GetMethod 会返回一个 Method 对象,表示该类的一个公共方法;而GetDeclaredMethod 也会返回一个 Method 对象,但它表示的是该类或接口的一个方法。
* GetMethod 的使用场景更广泛一些,而GetDeclaredMethod 的使用场景更多地用于获取一个类或接口的所有方法。

综上所述,GetMethod 和 GetDeclaredMethod 都是 Java 反射中非常重要的两个方法,它们都用于获取一个类或接口的方法,但它们有着不同的区别。GetMethod 只能获取公共方法,而GetDeclaredMethod 可以获取所有方法(包括继承而来的私有方法)。

相关标签:java前端开发语言
其他信息

其他资源

Top