原始和通用列表

时间:2017-04-09 07:31:26

标签: java

这是一个代码,只是为了知道什么是错的,什么是正确的。

public class JavaApplication5 {


public static void main(String[] args) {

  List l=new ArrayList<String>();//Line 1

  List<Object> x=new ArrayList<String>();//Line 2


}

 }

在上面的第1行工作正常但第2行给出了编译错误。你能告诉我为什么吗?

ListList<Object>是否相同?两者都应该是错的,或者两者都应该是正确的。

2 个答案:

答案 0 :(得分:1)

你必须在两个地方都设置相同的类型:

List<Object> x = new ArrayList<String>();
//----^-------------------------^--------

所以你必须选择解决问题:

不要在ArrayList

中设置任何类型
List<Object> x = new ArrayList<>();

或者设置相同的类型:

List<Object> x = new ArrayList<Object>();
//or
List<String> x = new ArrayList<String>();

答案 1 :(得分:0)

既没有发布选项。对于List String(s),自Java 7以来,您可以使用菱形运算符 - 例如,

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

然而,旧的

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

仍然合法。

您的第一个选项是raw type,而您的第二个选项(如果是合法的)会生成List,其中可以包含任何类型的Object(不只是String )。