加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从继承的静态方法获取调用者类名

发布时间:2020-12-14 06:03:27 所属栏目:Java 来源:网络整理
导读:我有以下类(注意方法是静态的): class Base{ public static void whosYourDaddy() { Class callerClass = // what should I write here to get caller class? System.out.print(callerClass.getName()); }}Class A extends Base{ public static void foo()
我有以下类(注意方法是静态的):
class Base
{
   public static void whosYourDaddy()
   {
      Class callerClass = // what should I write here to get caller class?
      System.out.print(callerClass.getName());
   }
}

Class A extends Base
{
   public static void foo()
   {
      A.whosYourDaddy();
   }
}

Class B extends Base
{
   public static void bar()
   {
      B.whosYourDaddy();
   }
}

当我打电话时:

A.foo();
B.bar();

我想获得输出:
AB而不是BaseBase.甚至可以使用静态方法(在Java 7中)?

解决方法

你可以做什么,但不应该:)使用Throwable getStackTrace方法.除了气味,这是非常缓慢的,因为获得堆栈跟踪并不是那么快.但是你将获得一个StackTraceElement数组,每个都将包含调用它的类的类(你也可以获取文件和行,如果你将两者分开:你可以获得一个可点击的链接日食,不是说我曾做过这样的事情……).

就像是

String className = new Throwable().getStackTrace()[1].getClassName();

希望有所帮助:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读