簡體   English   中英

帶有靜態初始值設定項的Java嵌套類

[英]java nested class with static initializer

正在閱讀名為Emergent Design的書以及關於單例的主題...

public class MyApp {
 private class SingletonHolder {
  public Object singleton; 
  static {
   singleton = new Object(); 
  }
 }
}

然后日食不斷抱怨靜態{}

正在閱讀Java,這些類應該具有多個靜態初始化程序。 那么如何使以上工作呢?


/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(); 
  }
 }
}

為了在靜態上下文中合法引用字段,該字段必須在上下文本地,或者在類中聲明為靜態。 如果要引用singleton ,則需要將其聲明為static

您需要將private static Object singleton;放置private static Object singleton; 靜態塊不能修改非靜態變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM