【发布时间】:2011-06-09 23:43:24
【问题描述】:
关于Java,我想静态地知道当前类的类名。 A是B的父类。我想在A(父类)中有一个包含当前类的类名的静态字符串,但是当在B(子类)中引用这个静态字符串时,它应该包含B 的类名。这可能吗?
例子:
public class Parent {
protected static String MY_CLASS_NAME = ???
.
.
.
}
public class Child extends Parent {
public void testMethod() {
if (MY_CLASS_NAME.equals(getClass().getName())) {
System.out.println("We're equal!");
}
}
}
【问题讨论】:
-
你为什么要这样做,因为你可以通过其他方式获得类名?
-
我有时也希望这也是可能的。但事实并非如此。
static这个词已经意味着一个成员/方法等被静态地链接到持有它的类。您不能覆盖它 - 例如当链接完成时动态成员/方法 -
Abstract variables in Java? 的可能重复项
-
你会怎么用,测试方法真的不多说。
-
我正在编写一个供其他开发人员使用的 API,并且我想要一些方法来验证使用该 API 的各种插件的包名称、类。我计划让开发人员对父类进行子类化,并将这个静态字符串与各种请求一起传递给我们的服务。 (不可否认,字符串可能更容易实现相同的目标而不是静态的)。任何其他建议如何实现这一目标?看起来它开始变成一个设计问题......
标签: java class inheritance static classname