类型不匹配:无法从ArrayList转换为List。

13

我只有这个代码,但是我的编译器报错了:类型不匹配:无法将ArrayList转换为List。那么问题出在哪里呢?能不能有人告诉我?我正在使用Eclipse Java EE IDE。

import java.awt.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class Main {
    public static void main(String[] args) {
        List list = new ArrayList();


    }
}
5个回答

30

导入不正确,应该为java.util.List


5
你已经导入了java.awt.List,它是AWT包中的列表控件,而不是代表元素列表的集合类java.util.List。因此,Java认为你正在将逻辑数组值转换为小部件,这是没有意义的。
将导入行更改为:
import java.util.List;

应该修复此问题,或者编写代码以解决此问题。
java.util.List list = new ArrayList();

为了明确地表示您想要一个集合,您需要显式指定。

话虽如此,在这里您应该使用泛型。使用原始集合类型已经被弃用了。最好的方法是编写类似以下的内容:

List<T> list = new ArrayList<T>();

希望这能有所帮助!

4
您需要导入java.util.List而不是java.awt.List
您可能还想使用类型参数而不是原始类型。例如,如果列表将保存String值:
List<String> list = new ArrayList<>();

在Java 7之前:

List<String> list = new ArrayList<String>();

实际上,您通过两次指定String来使用冗余的类型参数。由于您有List<String>,因此可以在其后跟随ArrayList<>()。 - Gabe
@Gabe - 这是真的; 但在Java 7之前,第二个String是必需的。旧习惯难改。 :) - Ted Hopp

2

由于 java.util.ArrayList 扩展自 java.util.List,而不是 java.awt.List。您导入了错误的类:

import java.awt.List;

对比。

import java.util.List;

1

正如其他人所说,这是一个导入错误。由于您正在使用Eclipse EDE,如果出现错误,请将光标放在该位置并按Ctrl + 1,它会为您显示建议,这可能有助于您修复错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接