伙计们,我已经创建了一个ArrayList,但我不想使其保持不变。我只是想找到一种解决方案,以了解如何不允许ArrayList删除对象。
public final class EMailArchive {
private final String name;
private final ArrayList <EMail> emailList;
private final LocalDate date;
public EMailArchive(String name, ArrayList <EMail> emailList) {
this.name = name;
this.emailList = emailList;
date = LocalDate.now();
}
public String getName() {
return name;
}
public LocalDate getDate( ) {
return date;
}
public List <EMail> getEMailList() {
return emailList;
}
public void addEMailToArchive(final EMail mail) {
emailList.add(mail);
// the mail added to the list shall not be removed, but how do i do that
}
}
答案 0 :(得分:1)
一种方法是实现ArrayList的子类,该子类重写remove方法
class myArrayLit extends ArrayList {
public myArrayList() {
super();
}
@Override
public remove(int index) {}
}
这是一个基本示例,还有更多方法可以覆盖,以实现您的目标。
答案 1 :(得分:0)
如果出于任何原因上述扩展ArrayList
的解决方案都不适合,则可以在getter中返回一个副本,如下所示:
public List <EMail> getEMailList() {
return new ArrayList<>(emailList);
}
对返回的List
所做的更改不会反映回类成员。