我有一个对象object,我将称之为方法toString.我怎么知道这个方法最后在什么类中实现?
例如,如果我们有层次结构:
class A /*extends Object */{
}
class B extends A{
public String toString() {
return "representation";
}
}
class C extends B{
}
class D extends C{
}
Run Code Online (Sandbox Code Playgroud)
和对象
Object object = new SomeClass(); //(A/B/C/D/Object)
Run Code Online (Sandbox Code Playgroud)
然后toString()我应该得到Object的Object和A而B为B,C和D
您可以使用以下Method.getDeclaringClass()方法:
...
private Class<?> definingClass(Class<?> clz, String method) throws NoSuchMethodException, SecurityException {
Method m = clz.getMethod(method);
return m.getDeclaringClass();
}
...
System.err.println(definingClass(A.class, "toString"));
System.err.println(definingClass(B.class, "toString"));
System.err.println(definingClass(C.class, "toString"));
System.err.println(definingClass(D.class, "toString"));
...
Run Code Online (Sandbox Code Playgroud)
结果:
class java.lang.Object
class com.example.B
class com.example.B
class com.example.B
Run Code Online (Sandbox Code Playgroud)
definingClass()如果需要查找具有参数的方法,则需要适当地扩展方法.
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |