Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 原始和通用列表_Java - Fatal编程技术网

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