在静态构造期间获取类的名称

时间:2013-06-01 18:41:26

标签: java static

C#中,我可以将类的名称分配给这样的本地静态变量。

 public class MyClass
 {
      private static string TAG = typeof(MyClass).Name;
 }

我发现这非常有用,因为如果将类重构为其他名称,则字符串的值会自动更新。方便标记调试消息等。

Java中是否可以这样?

 public class MyClass
 {
      private static String TAG = ????;
 }

我知道我可以使用getClass().getName(),但这需要引用一个对象。有没有办法在静态变量上执行此操作?

2 个答案:

答案 0 :(得分:5)

您不需要将类的名称分配给字段而不是写入。

MyClass.TAG

你可以写

MyClass.class.getName();

如果你真的需要,你可以将其分配给TAG,但我不明白这一点。

答案 1 :(得分:2)

也可以使用一种技巧,不需要程序员事先知道类名:

public class MyClass
  {
    private static String TAG =
        new Object() { }.getClass().getEnclosingClass().getName();
  }

这个技巧使用嵌套的匿名Object子类来获取执行上下文。如果将代码克隆到不同的类中,它具有复制/粘贴安全的好处......