📜  Java中的类 getDeclaredMethod() 方法和示例(1)

📅  最后修改于: 2023-12-03 14:42:58.571000             🧑  作者: Mango

Java中的类getDeclaredMethod()方法和示例

在Java中,可以使用反射机制来获取一个类的方法并调用它们。getDeclaredMethod()是一个用于获取类中声明的方法的方法。它返回一个Method对象,可以使用该对象来调用方法。

语法

以下是getDeclaredMethod()方法的语法:

Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException

参数说明:

  • name:要查找的方法的名称。
  • parameterTypes:该方法的形参类型列表。

返回值:

  • 返回一个Method对象,该对象表示指定名称和参数类型的声明方法。
示例

假设有一个类MyClass,其中包含三个公共方法method1()method2()method3(),它们的形参类型都不同。在下面的示例中,我们将使用getDeclaredMethod()方法获取一个名为"method2"的方法:

import java.lang.reflect.*;

public class MyClass {
  public void method1(int n) {
    System.out.println("method1 with integer: " + n);
  }

  public void method2(String message) {
    System.out.println("method2 with string: " + message);
  }

  public void method3(boolean b) {
    System.out.println("method3 with boolean: " + b);
  }
}

public class Main {
  public static void main(String[] args) throws Exception {
    MyClass obj = new MyClass();
    Method method = MyClass.class.getDeclaredMethod("method2", String.class);
    method.invoke(obj, "Hello World");
  }
}

在代码中,我们创建了一个MyClass对象,并使用getDeclaredMethod()方法获取了一个名为"method2"的方法。然后,我们使用Method对象的invoke()方法调用该方法,并传递一个字符串参数"Hello World"。

注意事项
  • getDeclaredMethod()方法只能获取该类中声明的方法,不能获取从父类继承而来的方法。
  • 如果你要获取所有的公共方法(包括从父类继承而来的公共方法),可以使用getMethods()方法。
  • 如果在类中有两个相同名称和参数类型的方法,则使用getDeclaredMethod()方法将抛出NoSuchMethodException异常,因为它无法区分这两个方法。