2017-03-27 4 views
-2

私のクラスからオブジェクト型のリストを取得しようとしていますobjectCollectionジェネリック型を使用しています。しかし、私は私が私が正しくジェネリッククラスを使用していたと思ったはjava.lang.Classにキャストできません

MyClassのはjava.lang.Classの

にキャストすることはできませんというエラーがありました。これをどうやって解決するのですか?

@SuppressWarnings("unchecked") 
public <T> ArrayList<T> getGameObj(ArrayList <T> obj) { 
    Class <T> objType = null; 
    while (objectIterator.hasNext()) { 
     objType = (Class<T>) objectIterator.getNext(); /* Error here */ 
     if (objectIterator.getCurrent().getClass().isAssignableFrom(objType.getClass())) 
      obj.add((T) objectIterator.getCurrent()); 

    } 
    return obj; 
} 
+2

'objectIterator'とは何ですか? '@SuppressWarnings(" unchecked ")'を追加しないでください。あなたの 'if'チェックが失敗する状況は?現在の要素タイプがそれ自身から割り当て可能かどうかをテストしようとしているようです。 –

+0

リストのような異なるオブジェクトタイプを格納するだけのものです – tuyenle

+2

'objectIterator'はクラスのリスト、オブジェクトのリスト、または何か他のリストですか?どのように定義しますか? (私たちに定義を示してください。) – ajb

答えて

1

オプション1: 変更

objType = (Class<T>) objectIterator.getNext(); /* Error here */ 

objType = (Class<T>) objectIterator.next(); 

オプション2:また 、あなたはHashMapの HashMap<Class, Type>にタイプとクラスを保存することができます。オブジェクトが定義されている/イテレータobjectIteratorが作成される前に、このハッシュマップにエントリを追加します。そして、hashmapを使ってobjectIterator.next()のクラスから型を取得します。

+0

エラーメッセージが何であるかを考えれば、これは正しいソリューションであるとは思われません。 –

+0

答えのオプション2が役立つ可能性があります – vlaxmi

関連する問題