【发布时间】:2018-10-08 04:57:50
【问题描述】:
作为alternative to static blocks,Oracle 文档建议调用方法,并且示例使用变量赋值:
public static varType myVar = initializeClassVariable();私有静态方法的优点是,如果您需要重新初始化类变量,它们可以在以后重用。
但是如果我不需要(并且希望避免未使用的)额外变量并且在我的静态块中还返回语句,那么调用静态代码的更好方法是什么?
在构造函数中调用静态方法对于静态块执行一次静态代码(构造函数可以是 private 用于实用程序类)是错误的设计
public MyClass() {
MyClass.initializeClassVariable();
}
那么唯一的改进是减少对私有的变量访问级别吗?
private static varType myVar = initializeClassVariable();
或者更好的方法是保留静态块并在那里添加方法?
static {
initializeClassVariable();
}
【问题讨论】:
-
“我不需要(并且希望避免未使用的)额外变量”是什么意思?您在说什么额外变量?静态代码的重点不就是初始化一个静态字段,即该字段有两种方式吗?
-
@Andreas 我不需要
myVar,它只是为执行静态代码而定义的 -
那么,如果不初始化静态字段,静态代码会做什么? “替代静态块”是关于初始化静态字段的替代方式。
-
如果你使用一个静态块,你不会通过那里再次调用该方法。您可以一次性运行该方法中的代码。
-
如果静态块不是在初始化一个静态字段,或者是同时初始化多个静态字段的复杂逻辑,那么“替代”是不合适的。文档只是提到有一个替代方案,而不是它总是适用的,或者你必须使用它。
标签: java static-block unused-variables