不兼容的类型,但它没有意义(Java)

时间:2014-03-07 06:07:24

标签: java generics iterator incompatibletypeerror

我正在尝试迭代一个集合,我想将下一个元素保存在一个临时变量中,但是它给了我一个不兼容类型的编译错误。

Iterator it = this.iterator();
E next = it.next();

next()返回一个泛型类型E,next类型为E.为什么它会给我错误?

3 个答案:

答案 0 :(得分:5)

您使用Iterator作为原始类型,因为您尚未提供类型参数。使用原始类型时,任何相关的泛型类型都将成为erasure。换句话说,在method参数,返回类型等中使用类类型变量会变为Object或上限。

你可能想要

Iterator<E> it = this.iterator();
E next = it.next();

如果this.iterator()的返回类型为Iterator<E>

答案 1 :(得分:1)

您正在使用原始类型迭代器,将它与Generics一起使用,然后它将允许编译

Iterator<E> it = this.iterator();
E next = it.next();

答案 2 :(得分:0)

使用泛型或者对象进行类型转换。