Java初始化方法

标签 java initialization

确保在 java 中调用 init 方法的好方法是什么?我看到的替代方案是

  • 不要测试它,让方法自己失败,可能是 NullPointerException
  • 测试方法是否被初始化或抛出
public void foo() {
     if (!inited) {
         throw new IllegalArgumentException("not initalized");
     }
     ...
}
  • 委托(delegate)
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();
     }
     ...
}

这些方法中的大多数都非常冗长并且降低了整体可读性。

最佳答案

如果初始化是使用契约(Contract)的一部分,则抛出 IllegalStateException,因为类的客户端尚未使其转换到正确的“已初始化”状态……

是否在创建时初始化取决于它的使用方式。例如,如果它可能被 Spring ApplicationContext 使用,那么您将需要推迟初始化。

关于Java初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13193847/

相关文章:

c# - C# 中的静态类 "Initialize"模式?

java - 在 JAVA 中同时用对象和另一个列表初始化最终列表?

java - 交换数组列表的内容

java - 如何返回二维字符串

java - 如何在 Java 中获得与 C# 中相同的 MD5 字符串

file.txt的Java位处理

java - Java单元测试如何触发JsonProcessingException?

java - 如何使用扫描仪启动最小/最大循环

C++ 在头文件中声明实例变量并在源文件中调用构造函数

swift 在 super.init 之前调用 self