如何获取java类的公共方法然后运行它?

时间:2015-04-23 10:25:08

标签: java

我有一个java类。我希望得到这个类的所有方法都是公共的并在类中定义。我的代码如下:

public class Class1
{
    private String a;
    private String b;


    public void setA(String a){
        this.a = a;
    }

    public void setB(String b){
        this.b = b;
    }

    public String getA(){
        return a;
   }

    private String getB(){
        return b;
    }
}

我希望只获得setAsetBgetA,然后运行此方法。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

你应该用反射看一下invoke()

Class1 class1=new Class1();
Method[] methods=class1.getClass().getDeclaredMethods();
for(Method i:methods){
   if (Modifier.isPublic(i.getModifiers())) {
     try {
       i.invoke(class1, "a");
     } catch (IllegalAccessException | InvocationTargetException e) {
       e.printStackTrace();
     }
  }
}

答案 1 :(得分:1)

使用getMethods获取所有可访问的公共方法,它还将包括Object类的所有方法,而不是只能通过选中Class1来查看getDeclaringClass()公共方法

 Class c = Class1.class;
 Method[] pubMeth = c.getMethods();
 for(Method m : pubMeth){
    if(m.getDeclaringClass() == c){ // Only Class1 pub methods
      System.out.println(m.getName());
    }
 }