当前位置:  开发笔记 > 编程语言 > 正文

哪个类调用了我的静态方法?

如何解决《哪个类调用了我的静态方法?》经验,为你挑选了1个好方法。

假设我有一个带有静态方法的Java类,如下所示:

class A
{
    static void foo()
    {
        // Which class invoked me?
    }
}

并且进一步假设类A具有任意数量的子类:

class B extends A { }
class C extends A { }
class D extends A { }
...

现在考虑以下方法调用:

A.foo();
B.foo();
C.foo();
D.foo();
...

我的问题是,方法如何foo()告诉哪个类正在调用它?



1> Daniel Spiew..:

它不能,这是静态方法问题的一部分.就编译器而言A.foo(),B.foo()它们完全相同.实际上,它们编译为相同的字节码.你无法获得更多类似的东西.

如果您确实需要这种信息,请使用单例并foo()转换为实例方法.如果您仍然喜欢静态语法,则可以构建外观A.foo().

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有