gpt4 book ai didi

java - 获取实现对象方法的类

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:23 24 4
gpt4 key购买 nike

我有一个对象object,我将调用它的方法toString。我如何知道最后在哪个类中实现了此方法?

例如,如果我们有层次结构:

class A /*extends Object */{                                                                                                              

}
class B extends A{
public String toString() {
return "representation";
}
}
class C extends B{
}
class D extends C{
}

和对象

Object object = new SomeClass(); //(A/B/C/D/Object)                                                                                

然后对于 toString() 我应该为 ObjectA 获取 ObjectB 用于 BCD

最佳答案

您可以使用 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"));

...

结果:

class java.lang.Object
class com.example.B
class com.example.B
class com.example.B

如果您需要查找有参数的方法,您需要适本地扩展definingClass()方法。

关于java - 获取实现对象方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25198389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com