Java ArrayList不兼容的类型

Sys*_*sel 1 java collections

我有个问题 .我正在尝试添加并将它们检索到同一类的对象到ArrayList,但是当我尝试检索它们时,我得到了不兼容的类型erroe

import java.util.*;

public class Test{

Test(){
    main();
}

List test = new ArrayList();

public void main(){
    test.add(new Square(10));

    Iterator i = test.iterator();
    while(i.hasNext()){
        Square temp = i.next();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

是的 - 你没有在任何地方使用泛型,所以i.next();Object编译器而言只是返回.

选项:

就个人而言,我赞成使用泛型 - 你可以更好地使用类型安全性:)

// Not clear why this is an instance variable - and please make fields private :)
List<Square> test = new ArrayList<Square>();

public void main() {
    test.add(new Square(10));

    Iterator<Square> i = test.iterator();
    while(i.hasNext()) {
        Square temp = i.next();
        // Use square here
    }
}
Run Code Online (Sandbox Code Playgroud)

两个旁边:

  • 增强的for循环可以替换你的while循环:

    for (Square square : test)
    
    Run Code Online (Sandbox Code Playgroud)
  • 有一个没有参数调用的实例方法很奇怪main; 它更常见public static void main(String[] args).关于你在这里所做的事情,没有什么不合法的,只是奇怪的.