已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
2天前关闭。
Improve this question
我是一个Java初学者,有点困惑为什么下面的代码会输出一个编译错误。
下面是代码。
我做错了什么?
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("Apple", "Bat", "Cat");
// System.out.println("Apple".endsWith("le"));
Iterator it = words.iterator();
while (it.hasNext()) {
if (it.next().endsWith("at")) {
it.remove();
}
}
}
}
2条答案
按热度按时间okxuctiv1#
需要将迭代器声明为
Iterator<String>
,以告诉编译器it.next()
将返回一个String
,它包含endsWith
,否则它会认为it.next()
将返回一个Object
,它不包含endsWith
。yi0zb3m42#
你应该学习泛型是什么。你得到了错误,因为你使用了原始类型和迭代器。原始类型意味着
Object
类型,但是你要调用的endsWith()
方法是String
类型的方法,所以你应该像Iterator<String>
一样声明你的迭代器来指定泛型的类型,这样编译器就知道对象的实际类型。有关泛型的更多信息,请单击此处https://docs.oracle.com/javase/tutorial/java/generics/index.html