Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Каким образом Iterable может хранить объекты?

#java


Есть сигнатура метода: Iterable incoming(Iterable tasks, Date start,
Date end).

Метод предназначен для хранения Taskов которые выполняются в промежутке между start
и end.

Вопрос: Каким образом работает Iterable. Что хранит?
    


Ответы

Ответ 1



Iterable - это интерфейс. Он в себе ничего не хранит, он предоставляет собой поведение. В данном случае, поведение - это перебор элементов. Это если совсем кратко. Рекомендую почитать статью с хабры на эту тему. Сигнатура метода Iterable incoming(Iterable tasks, Date start, Date end) говорит о том, что в качестве первого аргумента будет поставляться коллекция, параметризованная типом Task и которая имплементирует интерфейс Iterable. Далее у этой коллекции можно будет взять iterator, т.к. этот метод объявлен в интерфейсе Iterable, с помощью которого можно будет обойти пришедшую коллекцию

Ответ 2



Iterable - это интерфейс, и он говорит только о поведении. В данном случае имеется ввиду его метод iterator(), возвращающий итератор. Это значит, что класс, имплементирующий данный интерфейс, должен иметь реализацию указанного выше метода. Работать с указанной вами сигнатурой просто - надо на вход метода передать все что угодно, лишь бы оно было Iterable. Самое простое - например, использовать public static ArrayList newArrayList(Iterator elements) из com.google.common.collect.Lists , guava

Комментариев нет:

Отправить комментарий