我有這樣的代碼我需要訪問NestedClass
內的getInnerS()
方法中的靜態類InnerClass
的變量mysample
。我試圖通過創建一個新對象InnerClass
來訪問它,但我得到java.lang.StackOverflowError
。使用外部類訪問靜態類成員
public class NestedClass{
private String outer = "Outer Class"; //NestedClass instance variable
NestedClass.InnerClass innerClass = new NestedClass.InnerClass();
void getOuterS(){
System.out.println(outer);
}
void getInnerS(){
System.out.println(innerClass.mysample);
}
static class InnerClass{
private String mysample = "Inner Class"; //InnerClass instance variable,
NestedClass a = new NestedClass();
void getIn(){
System.out.println(mysample);
}
void getOut(){
System.out.println(a.outer);
}
}
public static void main(String[] args){
NestedClass nestedClass = new NestedClass();
NestedClass.InnerClass nestedInner = new NestedClass.InnerClass();
nestedClass.getOuterS();
nestedClass.getInnerS();
nestedInner.getIn();
nestedInner.getOut();
}
}
非常感謝你..... Nahuel Fouilleul我gotit ..如果你不介意你能說,我們爲什麼使用這個..? –
+1用於刪除靜態,允許使用'NestedClass.this'用於 – Reimeus
如果InnerClass是靜態的,它不能訪問非靜態的外部類的成員,但如果不存在至少一個可以被接受的外部類的實例,創建嵌套實例的那個。對不起,如果不清楚也許別人可以更好地解釋 –