[英]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.