在C#
中,我可以将类的名称分配给这样的本地静态变量。
public class MyClass
{
private static string TAG = typeof(MyClass).Name;
}
我发现这非常有用,因为如果将类重构为其他名称,则字符串的值会自动更新。方便标记调试消息等。
在Java
中是否可以这样?
public class MyClass
{
private static String TAG = ????;
}
我知道我可以使用getClass().getName()
,但这需要引用一个对象。有没有办法在静态变量上执行此操作?
答案 0 :(得分:5)
您不需要将类的名称分配给字段而不是写入。
MyClass.TAG
你可以写
MyClass.class.getName();
如果你真的需要,你可以将其分配给TAG,但我不明白这一点。
答案 1 :(得分:2)
也可以使用一种技巧,不需要程序员事先知道类名:
public class MyClass
{
private static String TAG =
new Object() { }.getClass().getEnclosingClass().getName();
}
这个技巧使用嵌套的匿名Object
子类来获取执行上下文。如果将代码克隆到不同的类中,它具有复制/粘贴安全的好处......