如何允许ArrayList从添加的对象中删除而不覆盖或使其不可变

时间:2019-01-04 16:11:43

标签: java object arraylist

伙计们,我已经创建了一个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
    }

}

2 个答案:

答案 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所做的更改不会反映回类成员。