我有一种情况,在类初始化期间,一个子类(我们称之为)调用基类的静态方法(我们称之为BaseClass
)并传递作为参数来标识正在初始化的特定类,或者Java的:在静态类初始化程序中是否有与Java的“this”等效的内容?
public class SubClass extends BaseClass {
static { BaseClass.init(SubClass.class); }
...
}
代替BaseClass
具有方法:
protected static void init(Class<?> c) {
...
}
我愿做的是有BaseClass
通话init
自动,如:
public class BaseClass {
static { init(thisclass); }
...
}
所以,问题是,它的Java有一些关键字,通过上述thisclass
表示,返回的类类初始化初始化?
如果您有多个子类,那么一个基类静态初始化程序如何初始化多个子类? –
在'BaseClass'的静态初始化块中初始化的类总是'BaseClass'。如果你期望初始化器运行子类,你需要调整你的期望值。 – user2357112
也许将此视为一个抽象问题。我从我的实现中解决了这个问题,这很好,但我想避免必须明确告诉基类正在初始化哪个子类。实际上,我将SubClass.class的值存储为Map的键;映射的值是BaseClass为每个子类跟踪的信息。 –