有没有办法获取Class对象的方法,而无法获取Object类定义的方法?
现在我正在使用getDeclaredMethods()来查找带有参数列表的特定方法。
我的问题是,这也会返回像 "等于"," hashCode"等... 因此,这些功能与我正在寻找的功能之间可能不明确。
查看文档,它说它只返回由此类定义的公共方法(或者在我的情况下是一个接口),并且我的对象永远不会覆盖这些方法
有没有解决方法呢?
示例:
class Test implements ITest {
void myMethod() {...}
}
在我的代码中我有类似
的内容Object o = new Test();
for (Method m : o.getClass().getDeclaredMethods()) {
System.out.println(m.getName()...);
}
这将打印出Object类
中定义的方法答案 0 :(得分:2)
getMethods()
返回类声明的所有方法,以及在对象类中声明的方法。您可以使用getDeclaredMethods()
来访问特定于类或从超类实现的方法。例如:
interface IChild {
int child1(int a, int b);
}
static class ChildImpl implements IChild {
@Override
public int child1(int a, int b) {
return a*b;
}
public int child2(int x, int y){
return x+x*y;
}
}
public static void main(String[] args) {
IChild i=new ChildImpl();
System.out.println("===Non Object Methods===");
for(Method m:i.getClass().getDeclaredMethods()){
System.out.println("Declared Method"+m.getName());
}
System.out.println("===All Methods===");
for(Method m:i.getClass().getMethods()){
System.out.println("Method: "+m.getName());
}
}
}
示例输出:
===非对象方法===
声明的方法:child2
声明的方法:child1
===所有方法=== 方法:child2
方法:child1
方法:等待
方法:等待
方法:等待
方法:等于
方法:toString
方法:hashCode
方法:getClass
方法:通知
方法:notifyAll