Я чув аргумент, що ви повинні використовувати найбільш загальний доступний інтерфейс, щоб ви не були прив'язані до певної реалізації цього інтерфейсу. Чи застосовується ця логіка до таких інтерфейсів, як java.util.Collection ?
Я б швидше побачив щось таке:
List<Foo> getFoos()
або
Set<Foo> getFoos()
замість
Collection<Foo> getFoos()
В останньому випадку я не знаю, з яким набором даних я маю справу, тоді як у перших двох випадках я можу зробити деякі припущення щодо замовлення та унікальності. Чи корисність java.util.Collection не є логічним батьком як для наборів, так і для списків?
Якщо ви зіткнулися з кодом, який використовував колекцію під час огляду коду, як би ви визначили, чи є виправданим його використання та які пропозиції ви б запропонували щодо його заміни більш конкретним інтерфейсом?
Collection<List<?>>? Поговоріть про кодування жаху!