我想定義一個具有ArrayList作爲其參數之一的類。 ArrayList的條目應該是最終的。在我的理解中,簡單地聲明該類的ArrayList屬性爲'final'將無法實現此目的,因爲它僅表示對此列表的引用是最終的。我怎樣才能聲明列表中的條目被視爲'最終'?具有最終條目作爲類屬性的Java ArrayList
public class MyClass{
private final ArrayList<Double> classAttributeWithFinalValues; // the entries of the list can still be changed
public MyClass(ArrayList<Double> classAttribute){
this.classAttributeWithFinalValues = classAttribute;
}
}
我很高興能夠糾正,但我認爲你最好的選擇就是讓類類型不可變(即所有公共final字段)。 –
您可以通過最終的方式來防止重新分配集合,並且您可以通過使用J8不可修改的集合來防止添加/刪除,但我認爲任何東西都不能阻止您在對象上使用setter,以免造成setter :) –
First ,你應該使用'List'而不是'ArrayList'。其次,由於'Double'已經是不可變的,所以'UnmodifyableList'中的給定'List'的**拷貝就足夠了 - 'this.list = Collections.unmodifiableList(new ArrayList <>(list)) '。 –