带有静态初始值设定项的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(); 
  }
 }
}