2017-04-09 25 views
1

這是一個代碼,只是要知道什麼是錯的,什麼是正確的。原始和通用列表

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>等價?要麼兩者都應該是錯的,要麼兩者都應該是正確的。

+0

您在左側列表中使用不同類型的對象,在右側您將它作爲字符串實例化。 – wedo

+0

[List List 的子類可能重複?爲什麼不是Java的泛型隱含多態?](http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicitly-p) – QBrute

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

既沒有發佈選項。對於String一個List(S),因爲Java 7中,你可以使用鑽石經營者 - 樣,

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

然而,舊的

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

仍然是合法的。

你的第一選擇是raw type,和你的第二個選項(如果它是合法的),使一個List可以包含任何類型的Object(不只是String)。