Как я могу разрешить ArrayList удалить добавленные объекты без переопределения или сделать его неизменным - PullRequest
0 голосов
/ 04 января 2019

Ребята, я создал 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 голосов
/ 05 января 2019

Если приведенное выше решение с расширением ArrayList не подходит по какой-либо причине, вы можете вернуть копию в получателе, например:

public List <EMail> getEMailList() {
    return new ArrayList<>(emailList);
}

Изменения в возвращенном List не будут отражены обратно члену класса.

0 голосов
/ 04 января 2019

Одним из способов является реализация подкласса ArrayList, который переопределяет метод удаления

class myArrayLit extends ArrayList {

    public myArrayList() {
        super();
    }

    @Override
    public remove(int index) {}

}

Это базовый пример, есть еще способ переопределить, чтобы достичь своей цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...