我遇到了以下情况:
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/