2012-08-09 5 views
5
import java.util.ArrayList; 

public class ListOfClasses 
{ 

    private ArrayList<Class> classes; 

    public ArrayList<Class> getClasses() 
    { 
     return classes; 
    } 

    public void setClasses(ArrayList<Class> classes) 
    { 
     this.classes = classes; 
    } 
} 

Do tego pojawia się następujące ostrzeżenie w Eclipse -Ostrzeżenie Eclipse - Class jest typem surowym. Odniesienia do typu rodzajowego klasy <T> powinny być parametryzowane

Klasa jest typem surowe. Odniesienia do typu rodzajowego klasy powinny być parametryzowane

ten został poproszony w earlier question, ale odpowiedź była specyficzna dla Spring Framework. Ale otrzymuję to ostrzeżenie, nawet jeśli nie mam nic wspólnego ze Spring. Więc jaki jest problem?

+0

Czy typ musi być tablicą ArrayList? –

Odpowiedz

9

Podejrzewam, że skarży się, że klasa jest surowa. Możesz wypróbować lub wyłączyć to ostrzeżenie.

Zignorowałbym ostrzeżenie w tym przypadku. Rozważałbym również użycie kopii obronnej.

private final List<Class> classes = new ArrayList<>(); 

public List<Class> getClasses() { 
    return classes; 
} 

public void setClasses(List<Class> classes) { 
    this.classes.clear(); 
    this.classes.addAll(classes); 
} 
1

Spróbuj

public class ListOfClasses 
{ 

    private ArrayList<Class<?>> classes; 

    public ArrayList<Class<?>> getClasses() 
    { 
     return classes; 
    } 

    public void setClasses(ArrayList<Class<?>> classes) 
    { 
     this.classes = classes; 
    } 
} 

Klasa jest typem parametryzowane jako dobrze, a jeśli nie zadeklarować typ argumentu, a następnie pojawi się ostrzeżenie o użyciu surowców rodzajów gdzie oczekiwane są parametryzowane typy.

0

Problem polega na tym, że nie można nic powiedzieć o typie zwróconej klasy. To ostrzeżenie nie jest zbyt użyteczne. Ponieważ nie wiesz, który typ klasy jest, nie możesz dodać do niego argumentów typu. Jeśli zrobisz to tak:

public Class<? extends Object> getClasses {} 

Nie robią to lepiej, ponieważ wszystko przebiega obiekt w Javie, oprócz prymitywów. Ignoruję te wskazówki lub je wyłączam.

Powiązane problemy