Расширение ArrayList <Date>: как использовать в нем объект Date? - PullRequest
0 голосов
/ 17 мая 2018

Мне нужен расширенный класс MyTime из ArrayList и добавление методов.Также мне нужны экземпляры Date и его методы типа after в MyTime.Но компилятор говорит:

error: cannot find symbol method after(Date)
where Date is a type-variable:
Date extends Object declared in class TimeList

Вот мой класс:

public class TimeList<Date> extends ArrayList<Date> {
    private Integer current_index;

    public Date getNextTime(){
        Date time = new Date();
        for (Date temp_time :this){
            if (time.after(temp_time)){
                return temp_time;
            }
        }
        return time;
    }
}

Как мне объявить экземпляр Date или класс MyTime?

1 Ответ

0 голосов
/ 17 мая 2018

Поскольку ваш класс не является универсальным, его объявление не должно иметь параметра универсального типа;оно должно быть только у ArrayList:

public class TimeList extends ArrayList<Date> ...
//                   ^
//       No <Date> in the declaration

Вам не нужно беспокоиться о том, что Date пропущено в названии вашего класса, потому что имя уже достаточно наглядно, чтобы читатели могли понять, что ваш класспредставляет коллекцию моментов времени.

Однако вы должны переосмыслить свой подход: вместо расширения ArrayList<Date> ваш класс должен либо содержать список, т. Е.

public class TimeList {
    private final List<Date> dates = new ArrayList<>();
    public List<Date> getDates() {
        return Collections.unmodifiableList(dates);
    }
    ... // your additional methods
}

, либо если вам нужно предоставить дополнительные методы для List<Date> Вы можете написать служебный класс:

public final class TimeLists {
    public static Date getNextTime(List<Date> dates) {
        ... //
    }
    public static Date getPriorTime(List<Date> dates) {
        ... //
    }
    ...
    private TimeLists() {
        // Prevent instantiation of TimeLists class
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...