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

不兼容的类型,但它没有';没有意义(Java),java,generics,iterator,incompatibletypeerror,Java,Generics,Iterator,Incompatibletypeerror,我试图遍历一个集合,并希望将下一个元素保存在一个临时变量中,但它给了我一个不兼容类型的编译错误 Iterator it = this.iterator(); E next = it.next(); next()返回泛型类型E,next的类型为E。为什么它会给我错误?您正在使用迭代器作为原始类型,因为您没有提供类型参数。当您使用原始类型时,任何相关的泛型类型都将成为它们的类型。换句话说,在方法参数、返回类型等中使用类类型变量会变成Object或上限 你可能想要 Iterator<E>

我试图遍历一个集合,并希望将下一个元素保存在一个临时变量中,但它给了我一个不兼容类型的编译错误

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

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

您正在使用
迭代器作为原始类型,因为您没有提供类型参数。当您使用原始类型时,任何相关的泛型类型都将成为它们的类型。换句话说,在方法参数、返回类型等中使用类类型变量会变成
Object
或上限

你可能想要

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

如果
this.iterator()
的返回类型为
iterator

,则使用
iterator
作为原始类型,因为您没有提供类型参数。当您使用原始类型时,任何相关的泛型类型都将成为它们的类型。换句话说,在方法参数、返回类型等中使用类类型变量会变成
Object
或上限

你可能想要

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

如果
this.iterator()
的返回类型为
iterator

您使用的是原始类型迭代器,请将其与泛型一起使用,然后它将允许编译

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

您使用的是原始类型迭代器,将其与泛型一起使用,然后它将允许编译

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

使用泛型或其他类型转换到对象。

使用泛型或其他类型转换到对象。

这很有意义。请注意错误消息-提示应该是关于
对象的。这很有意义。请注意错误消息-提示应该是关于
对象的。谢谢。真不敢相信我竟然没有意识到这一点。谢谢@用户3391296这一点都不明显。类型擦除不是一个简单的概念。两种都不是生的,谢谢。真不敢相信我竟然没有意识到这一点。谢谢@用户3391296这一点都不明显。类型擦除不是一个简单的概念。两者都不是原始类型。