带有静态初始值设定项的java嵌套类
正在读一本名为《紧急设计》的书,书中的主题是单例带有静态初始值设定项的java嵌套类,java,static,initialization,Java,Static,Initialization,正在读一本名为《紧急设计》的书,书中的主题是单例 public class MyApp { private class SingletonHolder { public Object singleton; static { singleton = new Object(); } } } 然后eclipse不断抱怨静态{} 在读Java时,类应该能够有多个静态初始值设定项。那么,我如何才能使上述工作 您需要将私有静态对象设置为singleton静态块无法修改非静态
public class MyApp {
private class SingletonHolder {
public Object singleton;
static {
singleton = new Object();
}
}
}
然后eclipse不断抱怨静态{}
在读Java时,类应该能够有多个静态初始值设定项。那么,我如何才能使上述工作
您需要将
私有静态对象设置为singleton代码>静态块无法修改非静态变量。您需要将私有静态对象设置为单例代码>静态块无法修改非静态变量。对于要在静态上下文中合法引用的字段,该字段必须是上下文的本地字段或在类中声明为静态字段。如果要引用singleton
,则需要将其声明为static
对于要在静态上下文中合法引用的字段,该字段必须是上下文的本地字段或在类中声明为静态字段。如果您想引用singleton
,您需要声明它static
+1同意,我还将添加SingletonHolder可能是一个静态类。+1同意,我还将添加SingletonHolder可能是一个静态类。
/tmp/jc_4873/MyApp.java:5: non-static variable singleton cannot be referenced from a static context
singleton = new Object();
^
/tmp/jc_4873/MyApp.java:4: inner classes cannot have static declarations
static {
^
2 errors
public class MyApp {
private class SingletonHolder {
public static Object singleton;
static {
singleton = new Object();
}
}
}
/tmp/jc_8488/MyApp.java:3: inner classes cannot have static declarations
public static Object singleton;
^
/tmp/jc_8488/MyApp.java:4: inner classes cannot have static declarations
static {
^
2 errors
public class MyApp {
private static class SingletonHolder {
public static Object singleton;
static {
singleton = new Object();
}
}
}