java - 在具有可接受/惯用的静态初始值设定项的类中使用空静态方法吗?

标签 java static initialization idioms

我遇到了以下情况:

class Foo {

  static {
    // setup for logging and configuration
  }

  public static void setup() {
    // do nothing
  }

}

这是惯用的 Java 代码吗?是否有应避免这种情况的具体原因?

这是在测试套件中发现的。

我最初担心的是,理论上可以在不调用 #setup() 的情况下进行初始化。

最佳答案

Is this idiomatic Java code?

没有。

Are there specific reasons this should be avoided?

是的:正如对这个问题的评论所证明的那样,这令人困惑。

My initial concern was that initialization could theoretically happen without calling #setup().

我猜作者担心的是如果不调用 setup(),初始化可能不会发生。 setup() 方法保证静态初始化程序已执行其“日志记录和配置设置”。据推测,作者试图通过调用空方法来确保此配置存在副作用。

关于java - 在具有可接受/惯用的静态初始值设定项的类中使用空静态方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929588/

相关文章:

node.js - Node.js 中的模块初始化并在请求之间保留其状态

c++ - 派生类构造函数依赖问题

java - 为什么我运行这段代码时永远不会死锁?

Java 排序抛出 java.lang.IllegalArgumentException : Comparison method violates its general contract

java - 如何在 Eclipse IDE 中执行 shell 脚本?

c - 多媒体计时器在 Release模式下工作正常,但在 Debug模式下工作不正常

java - 钻石广场执行不当

java - 静态类/常量字段层次结构 - 可以做到吗?

java - 如何在静态方法中实例化非静态内部类?

c++ - 无法使用 GLFW3 初始化 GLew