[英]Is an ArrayList automatically declared static in Java, if it is an instance variable?
我正在嘗試做這樣的事情:
private class aClass
{
private ArrayList<String> idProd;
aClass(ArrayList<String> prd)
{
this.idProd=new ArrayList<String>(prd);
}
public ArrayList<String> getIdProd()
{
return this.idProd;
}
}
因此,如果我有ArrayLIst<String>
(st1,st2,st3)的多個實例,並且想要創建aClass的新對象:
{
aClass obj1,obj2,obj3;
obj1=new aClass(st1);
obj2=new aClass(st2);
obj3=new aClass(st3);
}
如果我為每個aClass對象(obj1..obj3)訪問方法getIdProd(),所有aClass對象都會返回st3嗎? 是否將ArrayList作為實例變量自動聲明為靜態?
不,除非您已聲明成員變量,否則成員變量不會自動為靜態。 我建議您重新格式化問題並發布其他上下文,以使您的問題更清楚。 您得到的結果很可能與您預期的結果有所不同,其原因與問題所暗示的原因不同。
您可以在類中從現有數組列表中創建一個新的數組列表,這會將現有數組列表的所有元素添加到新數組列表中。
但是,元素是相同的,因為數組列表不是“深度克隆”的,這似乎是您想要的。 您必須構建一個構造函數,該構造函數在所有元素上調用clone()並將克隆添加到類中的新數組列表中。
順便說一句:使用代碼格式功能可以使您的問題更具可讀性。 編輯:哦,當我發布此答案時,您做到了:)
數據成員不是自動靜態的,除非您在接口內部聲明它們(不常見)
由於您在構造函數中復制了數組列表,並且項類型是不可變的(字符串),因此,aClass的不同實例可以在完全不同的ArrayList副本上工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.