Java 原始和通用列表
这是一个代码,只知道什么是错的,什么是对的Java 原始和通用列表,java,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 } } 公共类JavaApplication5{ 公共静态void ma
public class JavaApplication5 {
public static void main(String[] args) {
List l=new ArrayList<String>();//Line 1
List<Object> x=new ArrayList<String>();//Line 2
}
}
公共类JavaApplication5{
公共静态void main(字符串[]args){
List l=new ArrayList();//第1行
List x=new ArrayList();//第2行
}
}
在上面的代码中,第1行工作正常,但第2行给出了编译错误。你能告诉我为什么吗
List
和List
是否等效?要么两者都是错误的,要么两者都是正确的。您必须在两个位置设置相同的类型:
List<Object> x = new ArrayList<String>();
//----^-------------------------^--------
或设置相同的类型:
List<Object> x = new ArrayList<Object>();
//or
List<String> x = new ArrayList<String>();
List x=new ArrayList();
//或
列表x=新的ArrayList();
两个选项都不过帐。对于字符串
(s)的列表
,自Java 7以来,您可以使用菱形运算符
List<String> x = new ArrayList<>();
List x=new ArrayList();
然而,老年人
List<String> x = new ArrayList<String>();
List x=new ArrayList();
这仍然是合法的
第一个选项是a,第二个选项(如果合法的话)生成一个
列表
,可以包含任何类型的对象
(不仅仅是字符串
).您在列表中使用了不同的类型,左侧是对象,右侧是将其实例化为字符串。列表和ListRaw类型之间可能存在的差异重复绕过了泛型类型检查,将不安全代码的捕获延迟到运行时。因此,List
在运行时变成了List
,而List
在编译时已经是已知的了。有关详细信息,请参阅Oracle的教程。
List<String> x = new ArrayList<String>();