#java
Есть сигнатура метода: Iterableincoming(Iterable tasks, Date start, Date end). Метод предназначен для хранения Taskов которые выполняются в промежутке между start и end. Вопрос: Каким образом работает Iterable. Что хранит?
Ответы
Ответ 1
Iterable - это интерфейс. Он в себе ничего не хранит, он предоставляет собой поведение. В данном случае, поведение - это перебор элементов. Это если совсем кратко. Рекомендую почитать статью с хабры на эту тему. Сигнатура метода Iterableincoming(Iterable tasks, Date start, Date end) говорит о том, что в качестве первого аргумента будет поставляться коллекция, параметризованная типом Task и которая имплементирует интерфейс Iterable. Далее у этой коллекции можно будет взять iterator, т.к. этот метод объявлен в интерфейсе Iterable, с помощью которого можно будет обойти пришедшую коллекцию Ответ 2
Iterable - это интерфейс, и он говорит только о поведении. В данном случае имеется ввиду его метод iterator(), возвращающий итератор. Это значит, что класс, имплементирующий данный интерфейс, должен иметь реализацию указанного выше метода. Работать с указанной вами сигнатурой просто - надо на вход метода передать все что угодно, лишь бы оно было Iterable. Самое простое - например, использовать public staticArrayList newArrayList(Iterator elements) из com.google.common.collect.Lists , guava
Комментариев нет:
Отправить комментарий