我应该如何调用类静态初始化?
问题描述:
我有许多GUI元素类型,并在GUI加载后直接在代码中使用它们。除非GUI加载器需要知道现有的元素来创建它们,否则就没问题。我应该如何调用类静态初始化?
public final class VerticalBox extends Element {
...
private static final ElementType type;
static {
type = ElementType.register("VerticalBox",
new ElementType.ICreator() {
@Override
public Element create(GUI gui) {
return new VerticalBox(gui);
}
});
}
@Override
public ElementType getType() {
return type;
}
}
最简单的方法是创建每个元素类的内部静态init
功能,但他们我需要调用init
的每一个。
我见过的JavaEE一些注释,但他们似乎是工作相反的方式。我可以从class
获得全部annotations
,但不能从annotation
获得classes
。我在这个话题上做了大量的搜索。
答
你想使用某种依赖注入这里,这将初始化需求的东西。值得关注的是Spring Framework,或者Google Guice或者Pico Container。
在大多数情况下,它的坏主意,有静态块,因为你没有对他们进行全面控制,其复杂的单元测试了很多 - 测试顺序很重要。