Test t1 = new Test();
Tutaj używasz Raw typ. tj. nie przekazuje się Type argument
dla twojego s.
Kompilator powinien dać ostrzeżenie tutaj
test jest typu raw. Odniesienia do rodzajowego typu badania powinny być parametryzowane
Test<String> t2 = new Test<String>();
tutaj używasz rodzajowych. przekazywanie String jako type argument
do Twojego generic class
.
Test t3 = new Test<String>();
kompilator powinien również daje ostrzeżenie o zbyt:
- testowy jest rodzajem surowe. Odniesienia do rodzajowego typu badania powinny być parametryzowane
samo jak pierwszym przypadku, ale używasz parametryczne typu podczas wywoływania konstruktora.
Istnieje również inna klasa, która działa poprawnie w wersjach + java 7.
Test<String> t4 = new Test<>();
Brak ostrzeżenia o kompilator jeśli używasz + java 7 ze względu na Inference
typu, w tym przypadku ze względu na wprowadzenie type inference
typu rodzajowego jest wywnioskować, co nie trzeba, aby zapewnić ogólny type podczas wywoływania konstruktora.
Prawie prawda. Pozostałe ostrzeżenia o dwóch reklamach, ale nie rzeczywisty błąd kompilacji. –