Zpo-2-wyk-Slajd5
Collection: specyfikacja
Z uwagi na rolę interfejsu Collection, konieczne było przyjęcie założeń dotyczących jego semantyki, konwencji nazewniczych i projektowych. Collection, jako najogólniejszy typ kolekcji, nakłada najmniejsze ograniczenia na przechowywane w nim elementy: specyfikacja mówi, że przechowuje on po prostu grupę elementów; z tego względu szczegółowe decyzje, dotyczące uporządkowania elementów, duplikatów, dostępu do elementów etc. są podejmowane w dziedziczących interfejsach lub bezpośrednio w implementacjach. Na szczególną uwagę zasługuje niesprawdzany wyjątek java.lang.UnsupportedOperationException, który jest zgłaszany, gdy implementacja interfejsu, mimo syntaktycznej konieczności zdefiniowania metody, nie chce jej obsługiwać. W ten sposób, unikając zubażania interfejsu Collection, obsługiwane są szczególne wypadki, w których konkretna kolekcja celowo jest pozbawiona pewnej funkcjonalności
Interfejs ten nie posiada bezpośredniej implementacji, tzn. nie istnieje w JDK klasa, która implementowałaby tylko ten interfejs. Jednak są struktury danych, które można stworzyć właśnie w ten sposób, np. multizbiór. Jednak dzięki temu wszystkie kolekcje są do pewnego stopnia ze sobą zgodne.
Przyjęto też konwencję, że każda kolekcja posiada dwa konstruktory: bezparametrowy, tworzący pustą kolekcję oraz kopiujący, który zapamiętuje w nowej kolekcji wszystkie elementy należące do starej. Konwencja ta jest stosowana dla wszystkich klas potomnych tego interfejsu: list, zbiorów i kolejek.