【发布时间】:2015-04-13 04:13:55
【问题描述】:
我想知道是否可以从静态块调用静态方法来初始化静态变量。是例如以下可能:
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 代码也是可重复使用的。我有一种感觉,我错过了一些东西。没有提到从静态块调用静态方法,这就是为什么我认为这是不好的做法。
【问题讨论】:
-
当然可以。当你尝试它时发生了什么?