通过Java中的名称和参数类型获取声明的方法

可以使用java.lang.Class.getDeclaredMethod()方法通过名称和参数类型获取声明的方法。该方法采用两个参数,即方法的名称和方法的参数数组。

getDeclaredMethod()方法为该类的方法返回一个Method对象,该对象与该方法的名称和作为参数的参数数组相匹配。

给出一个通过名称和使用该getDeclaredMethod()方法的参数类型获取已声明方法的程序,如下所示:

示例

package Test;
import java.lang.reflect.*;
public class Demo {
   public String str;
   private Integer func1() {
      return 1;
   }
   public void func2(String str) {
      this.str = "Stars";
   }
   public static void main(String[] args) {
      Demo obj = new Demo();
      Class c = obj.getClass();
      try {
         Method m1 = c.getDeclaredMethod("func1", null);
         System.out.println("The method is: " + m1.toString());
         Class[] argument = new Class[1];
         argument[0] = String.class;
         Method m2 = c.getDeclaredMethod("func2", argument);
         System.out.println("The method is: " + m2.toString());
      }
      catch(NoSuchMethodException e){
         System.out.println(e.toString());
      }
   }
}

输出结果

The method is: private java.lang.Integer Test.Demo.func1()
The method is: public void Test.Demo.func2(java.lang.String)

现在让我们了解上面的程序。

在Demo类中,两个方法是func1()和func2()。演示这的代码片段如下-

public String str;
private Integer func1() {
   return 1;
}
public void func2(String str) {
   this.str = "Stars";
}

在该方法中main(),创建了Demo类的对象obj。然后getClass()用于获取c中的obj类。最后,该getDeclaredMethod()方法用于获取方法func1()和func2()并显示它们。演示这的代码片段如下-

Demo obj = new Demo();
Class c = obj.getClass();
try {
   Method m1 = c.getDeclaredMethod("func1", null);
   System.out.println("The method is: " + m1.toString());
   Class[] argument = new Class[1];
   argument[0] = String.class;
   Method m2 = c.getDeclaredMethod("func2", argument);
   System.out.println("The method is: " + m2.toString());
}