java:命令提示符出现编译错误

hpxqektj  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(419)
  1. import java.util.*;
  2. public class Lab8 {
  3. public static void main(String str[]) {
  4. List list=new ArrayList();
  5. list.add("sri");
  6. list.add("Nivas");
  7. list.add("Dande");
  8. list.add("JLC");
  9. System.out.println(list);
  10. Iterator it=list.iterator();
  11. while(it.hasNext()) {
  12. Object obj=it.next();
  13. System.out.println(obj);
  14. if(obj.equals("JLC"))
  15. it.remove();
  16. }
  17. System.out.println(list);
  18. }
  19. }

问题:

在用ide编译上面的代码时,它工作得很好,但是当我编译它时
使用命令提示符,编译器抛出一个错误,如下所示:

  1. error: incompatible types
  2. Object obj=it.next();
  3. ^
  4. required: Object
  5. found: java.lang.Object

为什么我在命令提示符下而不是ide上出现这个错误?

cbjzeqam

cbjzeqam1#

我试着在我的系统上运行你的代码,但在我的命令提示符(windows)中出现了一个不同的错误。

  1. Note: Lab8.java uses unchecked or unsafe operations.
  2. Note: Recompile with -Xlint:unchecked for details.

嗯,也许我们的系统处理这类问题的方式有点不同,但是代码的问题是缺少泛型。您正在将字符串对象添加到列表中,因此应将其指定为字符串对象。不需要特别说明,您可以添加string、int和其他内容,并且您对列表中的对象执行的后续操作并不总是可以保证正常工作(在本例中,没有太大问题,因为您只是将内容打印出来,但尽管如此,jvm仍然会在编译代码之前警告您这一点)。
干得好。注意使用尖括号来更严格地指定类型(在java这样的静态类型语言中是一个很好的实践)。

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. public class Lab8 {
  4. public static void main(String str[]) {
  5. ArrayList<String> list=new ArrayList<String>();
  6. list.add("sri");
  7. list.add("Nivas");
  8. list.add("Dande");
  9. list.add("JLC");
  10. System.out.println(list);
  11. Iterator<String> it=list.iterator();
  12. while(it.hasNext()) {
  13. Object obj=it.next();
  14. System.out.println(obj);
  15. if(obj.equals("JLC"))
  16. it.remove();
  17. }
  18. System.out.println(list);
  19. }
  20. }

eclipse允许构建和运行旧代码,但是尝试在命令行中编译会显示编译警告。为什么不同?好吧,eclipse假设您已经阅读了它的编译警告(代码左侧的ide中会显示这些警告,并带有一个小灯泡符号),因此如果您愿意的话,它允许您构建和运行程序。命令行中没有这样的特性,因此它们必须给您一些明确的警告消息。
在任何情况下,我希望你没有任何更多的错误使用我提供的代码。如果你仍然有错误,那么也许这是另一个问题。
希望这有帮助。

展开查看全部

相关问题