2012-05-13 52 views
9

我只有这个,但我的编译器说:类型不匹配:不能从ArrayList转换为列表 那么,有什么问题可以告诉我吗?我正在使用Elipse Java EE IDE。类型不匹配:无法从ArrayList转换为列表

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(); 


    } 
} 

回答

21

不正确导入,它必须是java.util.List

+0

是的,你是对的,谢谢! –

3

您需要导入java.util.List而不是java.awt.List

您可能还想使用类型参数而不是原始类型。例如,如果该列表将要举行String值:

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

,或者之前的Java 7:

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

实际上,通过指定两次字符串,您有一个冗余类型参数。既然你有列表你可以跟着ArrayList <>() – Gabe

+0

@Gabe - 这是真的;但在Java 7之前,第二个“String”是必需的。旧习难改。 :) –

2

因为java.util.ArrayList延伸java.util.List,不java.awt.List。要导入错误的类:

import java.awt.List; 

import 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>(); 

希望这有助于!

1

正如别人告诉它的一个导入错误。由于您在使用Eclipse EDE时出现错误,请将光标停留在该位置,然后按Ctrl + 1,它会显示可能会帮助您修复错误的建议。

相关问题