2012-08-09 98 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; 
    } 
} 

對於這一點,我得到以下警告在日食 -Eclipse警告 - 類是原始類型。引用泛型類型類<T>應該是參數

類是原始類型。引用泛型類型類應該是 參數

這被要求在earlier question,但得到的答覆是特定於Spring框架。但即使與Spring沒有任何關係,我也會收到這個警告。那麼問題是什麼?

+0

該類型是否必須是ArrayList? – 2012-08-09 13:55:55

回答

9

我懷疑它抱怨Class是原始類型。你可以試試

private List<Class<?>> classes; 

或者抑制這個特殊的警告。

我會忽略這種情況下的警告。我也會考慮使用防禦性的副本。

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

嘗試

public class ListOfClasses 
{ 

    private ArrayList<Class<?>> classes; 

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

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

類是參數化類型,以及,如果你不聲明類型參數,那麼你得到一個警告,使用其中的參數化類型,預計原始類型。

0

問題是你不能說任何關於返回類的類型。這個警告不是很有用。既然你不知道它是哪一類的類型,你不能向它添加類型參數。如果你不喜歡這樣寫道:

public Class<? extends Object> getClasses {} 

你沒有變得更好,因爲一切在Java的擴展對象,除原語。我忽略了這個提示,或者把它們變成了。