在Java中使用反射调用对象的方法

可以使用java.lang.Class.getDeclaredMethods()方法调用对象的方法。此方法返回一个数组,其中包含具有公共,私有,受保护和默认访问权限的所有Method对象。但是,不包括继承的方法。

另外,getDeclaredMethods()如果类或接口没有方法,或者在Class对象中表示原始类型,数组类或void ,则该方法返回零长度数组。

演示此的程序如下所示-

示例

import java.lang.reflect.Method;
class ClassA {
   private String name = "John";
   public String returnName() {
      return name;
   }
}
public class Demo {
   public static void main(String[] args) throws Exception {
      Class c = ClassA.class;
      Method[] methods = c.getDeclaredMethods();
      ClassA obj = new ClassA();
      for (Method m : methods) {
         Object result = m.invoke(obj, new Object[0]);
         System.out.println(m.getName() + ": " + result);
      }
   }
}

输出结果

returnName: John