1 java generics iterator incompatibletypeerror
我正在尝试迭代一个集合,我想在临时变量中保存下一个元素,但是它给了我一个不兼容类型的编译错误.
Iterator it = this.iterator();
E next = it.next();
Run Code Online (Sandbox Code Playgroud)
next()返回一个泛型类型E,next类型为E.为什么它会给我错误?
您使用的Iterator
是原始类型,因为您没有提供类型参数.使用原始类型时,任何相关的泛型类型都会成为它们的擦除.换句话说,在method参数,返回类型等中使用类类型变量要么成为Object
上限,要么成为上限.
你可能想要
Iterator<E> it = this.iterator();
E next = it.next();
Run Code Online (Sandbox Code Playgroud)
如果this.iterator()
有返回类型Iterator<E>
.