Java:从静态方法中获取被调用的类名

标签 java reflection

我有两个这样定义的类:

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() 将返回AB.getName() 会返回 B?

谢谢。

最佳答案

这是不可能的,至少在您所问的一般意义上是不可能的。

没有方法B.getName()。虽然您可以在代码中键入它,但它会被编译为与 A.getName() 相同的字节码(我认为您也会收到编译器警告)。

因此在运行时,无法判断某人是如何引用静态方法的——就像无法判断调用者正在使用的局部变量名一样。

关于Java:从静态方法中获取被调用的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17487708/

相关文章:

java - 从数组列表中删除一串数据

javascript - 从js数组创建树

java - 将类从 Maven 依赖项加载到我的 ClassLoader

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

java - 关于java默认包(使用Eclipse)

java - 如何获取异常源对象

java - Spring Boot 在多个数据库(数据源)之间切换

java - 加载 JDBC 驱动程序

java - MyClass.class 和 Class.forName ("className"之间的区别)

java - 使用Java反射获取类数组的类型