我想知道是否可以在静态块中调用静态方法以初始化静态变量。例如,以下代码是否可行:
他们的解释是:
私有静态方法的优点是,如果您需要重新初始化类变量,则可以在以后重用它们。
但是,AppProperties代码也是可重用的。我感到自己漏掉了一些东西。从静态块调用静态方法没有被提及,这就是我认为这是不好的做法的原因。
public class AppProperties {
private static final Logger logger = LoggerFactory.getLogger(AppProperties.class);
private static final String PARSER_PROPERTIES_FILE = "/parser.properties";
private static final Properties PARSER_PROPERTIES = new Properties();
private static final Properties DAO_PROPERTIES = new Properties();
static {
loadParserProperties();
loadDaoProperties();
// Some other configuration
}
public static void loadParserProperties() {
// Loading parser properties
}
// Further methods omitted
}
这是一个好的实践吗?
编辑: Oracle 建议按照以下方式进行初始化:
class Whatever {
public static VarType myVar = initializeClassVariable();
private static VarType initializeClassVariable() {
// Initialization code goes here
}
}
他们的解释是:
私有静态方法的优点是,如果您需要重新初始化类变量,则可以在以后重用它们。
但是,AppProperties代码也是可重用的。我感到自己漏掉了一些东西。从静态块调用静态方法没有被提及,这就是我认为这是不好的做法的原因。