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

前端之家收集整理的这篇文章主要介绍了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()
   {
      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();

希望有所帮助:)

猜你在找的Java相关文章