我有两个这样定义的类:
class A {
public static String getName(){
Class c = getCalledClass();
return c.getSimpleName();
}
}
class B extends A {
//no methods are defined here!
}
我想知道是否可以编写 static
方法 getCalledClass()
以便调用 A.getName()
将返回A
和 B.getName()
会返回 B
?
谢谢。
最佳答案
这是不可能的,至少在您所问的一般意义上是不可能的。
没有方法B.getName()
。虽然您可以在代码中键入它,但它会被编译为与 A.getName()
相同的字节码(我认为您也会收到编译器警告)。
因此在运行时,无法判断某人是如何引用静态方法的——就像无法判断调用者正在使用的局部变量名一样。
关于Java:从静态方法中获取被调用的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17487708/