这是一个代码,只是为了知道什么是错的,什么是正确的。
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行给出了编译错误。你能告诉我为什么吗?
List
和List<Object>
是否相同?两者都应该是错的,或者两者都应该是正确的。
答案 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
)。