Ho sentito l'argomentazione secondo cui dovresti usare l'interfaccia più generica disponibile in modo da non essere legato a una particolare implementazione di quell'interfaccia. Questa logica si applica a interfacce come java.util.Collection ?
Preferirei vedere qualcosa di simile al seguente:
List<Foo> getFoos()
o
Set<Foo> getFoos()
invece di
Collection<Foo> getFoos()
Nell'ultimo caso, non so con quale tipo di set di dati ho a che fare, mentre nei primi due casi posso fare alcune ipotesi su ordinazione e unicità. Non java.util.Collection hanno una al di fuori utilità di essere un genitore logica per entrambi i gruppi e le liste?
Se ti imbattessi in un codice che utilizzava Collection durante una revisione del codice, come determineresti se il suo utilizzo è giustificato e quali suggerimenti daresti per la sua sostituzione con un'interfaccia più specifica?
Collection<List<?>>? Parla del codice horror!