2012-08-09 9 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フレームワークに特異的でした。しかし、私は春とは関係なくこの警告を受けています。それで問題は何ですか?

+0

型はArrayListでなければなりませんか? –

答えて

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のオブジェクトを拡張しているので、それを改善することはできません。私はこのヒントを無視するか、またはそれらを変える。

関連する問題