import java.util.*;
public class Lab8 {
public static void main(String str[]) {
List list=new ArrayList();
list.add("sri");
list.add("Nivas");
list.add("Dande");
list.add("JLC");
System.out.println(list);
Iterator it=list.iterator();
while(it.hasNext()) {
Object obj=it.next();
System.out.println(obj);
if(obj.equals("JLC"))
it.remove();
}
System.out.println(list);
}
}
问题:
在用ide编译上面的代码时,它工作得很好,但是当我编译它时
使用命令提示符,编译器抛出一个错误,如下所示:
error: incompatible types
Object obj=it.next();
^
required: Object
found: java.lang.Object
为什么我在命令提示符下而不是ide上出现这个错误?
1条答案
按热度按时间cbjzeqam1#
我试着在我的系统上运行你的代码,但在我的命令提示符(windows)中出现了一个不同的错误。
嗯,也许我们的系统处理这类问题的方式有点不同,但是代码的问题是缺少泛型。您正在将字符串对象添加到列表中,因此应将其指定为字符串对象。不需要特别说明,您可以添加string、int和其他内容,并且您对列表中的对象执行的后续操作并不总是可以保证正常工作(在本例中,没有太大问题,因为您只是将内容打印出来,但尽管如此,jvm仍然会在编译代码之前警告您这一点)。
干得好。注意使用尖括号来更严格地指定类型(在java这样的静态类型语言中是一个很好的实践)。
eclipse允许构建和运行旧代码,但是尝试在命令行中编译会显示编译警告。为什么不同?好吧,eclipse假设您已经阅读了它的编译警告(代码左侧的ide中会显示这些警告,并带有一个小灯泡符号),因此如果您愿意的话,它允许您构建和运行程序。命令行中没有这样的特性,因此它们必须给您一些明确的警告消息。
在任何情况下,我希望你没有任何更多的错误使用我提供的代码。如果你仍然有错误,那么也许这是另一个问题。
希望这有帮助。