![](/img/trans.png)
[英]How I can share the same copy of ArrayList in 2 inner anonymous Classes?
[英]How can I fill an Arraylist with inner classes?
這是我的主要課程:
import java.util.ArrayList;
public class MainClass {
public static void main(String[] args){
ArrayList<SecondClass.InnerClass> list=new ArrayList<SecondClass.InnerClass>();
list.add(new SecondClass.InnerClass()); //error here (read below)
}
}
這是第二堂課:
public class SecondClass {
public class InnerClass{
}
}
在MainClass
,在list.add
,我得到這個錯誤:
無法訪問類型為SecondClass的封閉實例。 必須使用類型為SecondClass的封閉實例來限定分配(例如xxnew A(),其中x是SecondClass的實例)。
我需要InnerClass
是非靜態的,因為InnerClass
需要對非靜態方法進行靜態引用。 如何在ArrayList
添加元素?
我認為您需要:
new SecondClass().new InnerClass()
我會仔細閱讀嵌套類 ,特別是static
和非靜態嵌套類之間的區別。
如果選擇使InnerClass
成為靜態嵌套類,請注意以下幾點:
靜態嵌套類與它的外部類(和其他類)的實例成員進行交互,就像其他任何頂級類一樣。 實際上,靜態嵌套類在行為上是頂級類,為了包裝方便,該頂級類已嵌套在另一個頂級類中。
這意味着您不需要SecondClass
的實例即可創建InnerClass
的實例-您可以像現在一樣實例化它。
但是,如果將InnerClass
非靜態嵌套類(我相信有時將它們稱為內部類 ,但請仔細檢查此術語),則需要創建SecondClass
的實例才能創建InnerClass
的實例:
new SecondClass().new InnerClass()
當您想使用一個innerClass時,必須創建一個包含innerclass的類的實例。 之后,您將使用它。 遵循Oracle教程的示例如何使用內部類的示例:
SecondClass sc=new SecondClass();
SecondClass.InnerClass in=sc.new InnerClass();
您可以在此處查看詳細信息: http : //docs.oracle.com/javase/tutorial/java/javaOO/nested.html
使InnerClass靜態
public class SecondClass {
public static class InnerClass{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.