我有一个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;
}
}
我希望只获得setA
,setB
和getA
,然后运行此方法。
我该怎么办?
答案 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());
}
}