Z surowych kolekcji do typów generycznych
Zastąp surowe typy kolekcji i rzutowania przy odczycie bezpieczeństwem typów w czasie kompilacji.
Porównanie kodu
✕ Java 1.4
List names = new ArrayList();
names.add("Duke");
String name = (String) names.get(0);
✓ Java 5+
List<String> names = new ArrayList();
names.add("Duke");
String name = names.get(0);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Bezpieczeństwo w czasie kompilacji
Nieprawidłowe typy elementów zawodzą podczas kompilacji, a nie w czasie działania.
Brak rzutowań przy odczycie
Wartości zachowują zadeklarowany typ elementu.
Samodokumentujące się API
Deklaracje kolekcji dokładnie określają, co zawierają.
Stare podejście
Surowe kolekcje
Nowoczesne podejście
Kolekcje generyczne
Od JDK
5
Poziom trudności
Początkujący
Wsparcie JDK
Z surowych kolekcji do typów generycznych
Dostępne
Generyki są dostępne od JDK 5 (wrzesień 2004).
Jak to działa
Surowe kolekcje akceptują dowolne typy obiektów i odkładają błędy typów do momentu wykonania rzutowania. Argumenty typu generycznego pozwalają kompilatorowi weryfikować zapisy i odczyty, eliminują rzutowania, poprawiają wsparcie IDE i czynią kontrakty API jawnymi. Surowe typy powinny normalnie pozostawać jedynie na starannie odizolowanych granicach interoperacyjności z kodem starszym.
Powiązana dokumentacja
Dowód