Я пишу небольшой API для работы с объектами, которые имеют определенные «черты». В этом случае у них всех есть интервал времени и пара других бит данных, поэтому я пишу интерфейс TimeInterval с некоторыми геттерами и сеттера.
Теперь большинство из этих методов API имеют дело с множеством или списком объектов. Внутренне эти методы используют Java Collections Framework (в частности, HashMap / TreeMap). Итак, эти методы API похожи на:
getSomeDataAboutIntervals(List<TimeInterval> intervalObjects);
Пара вопросов:
а) Должно ли это быть List<? extends TimeInterval> intervalObjects
вместо этого?
Это в основном вопрос стиля? Единственный недостаток использования строго интерфейса, который я вижу, заключается в том, что вам нужно создать свой список как List<TimeInterval>
, а не List<ObjectThatImplementsTimeInterval>
.
Это означает потенциальную необходимость скопировать List<Object..>
в List<TimeInterval>
, чтобы передать его API.
Есть ли другие плюсы и минусы для любого подхода?
б) И еще один тупой вопрос :) Структура коллекций гарантирует, что я всегда получаю один и тот же экземпляр, который я вставил, коллекции действительно являются коллекцией ссылок, верно?