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

1 java generics iterator incompatibletypeerror

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

Iterator it = this.iterator();
E next = it.next();
Run Code Online (Sandbox Code Playgroud)

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

Sot*_*lis 5

您使用的Iterator是原始类型,因为您没有提供类型参数.使用原始类型时,任何相关的泛型类型都会成为它们的擦除.换句话说,在method参数,返回类型等中使用类类型变量要么成为Object上限,要么成为上限.

你可能想要

Iterator<E> it = this.iterator();
E next = it.next();
Run Code Online (Sandbox Code Playgroud)

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