Java初始化方法
确保在java中调用init方法的好方法是什么?我看到的替代方案是Java初始化方法,java,initialization,Java,Initialization,确保在java中调用init方法的好方法是什么?我看到的替代方案是 不要测试它,让方法自己失败,可能是由于NullPointerException 测试方法是否已初始化或抛出 玛瑙 始终初始化,否则将初始化设为noop 静默初始化 大多数方法都非常冗长,降低了总体可读性 调用init()
- 不要测试它,让方法自己失败,可能是由于
NullPointerException
- 测试方法是否已初始化或抛出
- 玛瑙
- 始终初始化,否则将初始化设为noop
- 静默初始化
大多数方法都非常冗长,降低了总体可读性 调用
init()在初始化程序块中,这样每个构造函数调用也将执行init()代码>大多数情况下,您都希望根据应用程序正在执行的容器选择帮助您快速失败的机制。例如,如果是web容器,则可能需要在创建过程中对其进行初始化。此外,我不知道下面的内容为何冗长。其意图简单、清晰、明确
public void foo() {
if (!inited) {
init();
}
...
}
如果初始化是使用合同的一部分,则抛出非法状态异常,因为类的客户端未使其转换到正确的“初始化”状态
创建时是否初始化取决于如何使用它。例如,如果可能是Spring应用程序上下文使用了它,那么您需要推迟初始化。init()的实际功能是什么?它需要为类的每个实例调用还是为每个应用程序调用一次?你不能把相关的代码放到类的构造函数中吗?好问题,我设想一种initonce
类型的行为,你可以使用静态初始化器块对类执行一次性初始化。
public void foo() {
if (!inited) {
throw new IllegalArgumentException("not initalized");
}
fooInternal();
}
private void fooInternal(){ ... };
public void foo() {
init();
...
}
public void init() {
if(!inited) {
...
}
}
public void foo() {
if (!inited) {
init();
}
...
}
public void foo() {
if (!inited) {
init();
}
...
}