2012-05-07 9 views
12

Poniżej jest moje składniaLista jest typu surowego. Odniesienia do typu rodzajowego listy <E> powinny być parametryzowane

List synchronizedpubliesdList = Collections.synchronizedList(publiesdList); 

Otrzymuję błąd składni:

List is a raw type. References to generic type List<E> should be parameterized.

Proszę zaproponować rozwiązanie.

+4

To jest ostrzeżenie, a nie błąd. Ten wiersz kodu zostanie skompilowany, ale javac nie wykona wszystkich testów typu. – Jerome

Odpowiedz

7

Musisz podać poprawny typ ogólny, np.

List<String> publiesdList = ... 
List<String> synchronizedpubliesdList = Collections.synchronizedList(publiesdList); 
27

wierzę, że

Lista jest typu RAW. Odniesienia do ogólnej listy Lista powinna być sparametryzowana.

nie jest błędem, ale ostrzeżeniem.

Zrozumienie rodzajowych jest podstawą, jeśli planujesz używać Java więc sugeruję, że powinieneś sprawdzić na stronach samouczka Java na ten temat:

java generics tutorials

Więc jeśli wiesz, jakiego typu obiekty znajdują się w publiesdList, niż można to zrobić:

List<YourType> synchronizedpubliesdList = Collections.synchronizedList(publiesdList); 

Jeśli istnieje wiele typów obiektów na liście niż można użyć symboli wieloznacznych:

List<?> synchronizedpubliesdList = Collections.synchronizedList(publiesdList); 

Lub jeśli po prostu chcesz pozbyć się ostrzeżenia, niż można stłumić to tak:

@SuppressWarnings("rawtypes") 
List synchronizedpubliesdList = Collections.synchronizedList(publiesdList); 

ten ostatni nie jest jednak zalecane.

+0

Idealny. Pominąłem ten sam problem, dodając Generic <> do deklaracji i Generic () do instancji w moim kodzie. dzięki. –

0

można zdefiniować "publiesdList" w ten sposób:

List<String> publiesdList = new List<String>(); 

Ostrzeżenie będzie dissappear.

Powiązane problemy