1

C#我可以将一个类的名称分配给一个像这样的局部静态变量。

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

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

这样的事情可能Java吗?

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

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

4

2 回答 2

5

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

MyClass.TAG

你可以写

MyClass.class.getName();

如果您确实需要,可以将其分配给 TAG,但我不明白这一点。

于 2013-06-01T18:43:35.057 回答
2

还有一个技巧,不需要程序员事先知道类名:

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

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

于 2013-07-24T00:54:40.643 回答