无法强制转换为java.lang.Class

时间:2017-03-27 03:09:21

标签: java

我试图使用泛型类型从我的类 objectCollection 获取对象类型列表。但是,我说错误

  

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;
}

1 个答案:

答案 0 :(得分:1)

<强>选项1: 改变

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

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

<强>选项2: 或者,您可以将Type和Class存储到HashMap中 HashMap<Class, Type>。在定义对象时/在创建迭代器objectIterator之前,将条目添加到此散列映射。然后使用hashmap从objectIterator.next()

类中获取Type