有什么区别:
private static Object myVar = new Object();
Run Code Online (Sandbox Code Playgroud)
和:
private static Object myVar2;
static{
myVar2 = new Object();
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我最终得到一个启动的静态变量
如果静态和最终对象的初始化更复杂,则可以更好地使用第二个.
例如:
static final MyClass something;
static {
Config conf=SettingsManager.getSettings();
MyClass obj=MyClassFactory.getInstance(conf);
obj.setVodoo(true);
something=obj;
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中没有区别,编译的字节码将完全或几乎相同.静态初始化器有时很有用,但更常被误用.如果目标是填充单个静态字段,请编写一个静态方法,该方法返回初始化对象并在静态字段声明中调用该方法.
归档时间: |
|
查看次数: |
122 次 |
最近记录: |