2013-12-10 40 views
-1

我完全相信這是代碼片段有錯誤。從頭開始編程的Java的Java說沒有錯誤。這是代碼:什麼是錯誤Java ArrayLists

ArrayList temp = new ArrayList(); 
temp.add("35"); 
temp.add(35); 

第2行沒有錯誤嗎? arrayList不能有一個字符串,並且同一個ArrayList中的整數是正確的?如果我錯了,請糾正我,明天我會對此進行測試。謝謝大家!

+0

如果你有這方面的測試..首先閱讀[泛型在Java](http://docs.oracle.com/javase/tutorial/extra/generics/)..你會得到一個更清晰的圖片.. – Abhinav

回答

4

是的,它是正確的。

由於您尚未在ArrayList中聲明任何類型,因此它允許所有對象。

現在你的ArrayList是相同

ArrayList<Object> temp = new ArrayList<Object>(); 

,看看下面的例子

ArrayList<String> temp = new ArrayList<String>(); 
temp.add("35"); 
temp.add(35); //compiler error, Only Strings please 

見下面的例子

ArrayList<Integer> temp = new ArrayList<Integer>(); 
temp.add("35");//compiler error, Only Integers please 
temp.add(35); 

而且它的高度器重使用原始類型,總是喜歡與特定類型一起使用。

現在在第一種情況下ArrayList temp = new ArrayList();,當你返回它時返回一個未知類型的Object。這可能是一個整數或字符串,你需要手動檢查你List

+1

非常感謝你!非常感謝您爲我清理了很多。 – user2673161

1

它是正確的,因爲它的原始類型意味着你可以添加任何object.You可以添加任何擴展Object恢復了過來之後類 你可以寫temp.add(x);其中x可以是任何東西字符串,整型,長日期任何延伸Object

例如

String x=""; 
    int x1=1; 
    Date df=new Date(); 
temp.add(x);// will work 
temp.add(x1);//will work 
temp.add(df);// will work 
0

它是正確的。既然你沒有聲明任何類型的列表,它將所有元素視爲Object類。您的定義是

ArrayList<Object> arr=new ArrayList<>(); 

用於編譯器。在這種情況下,35將裝箱到Integer,「35」將是StringIntegerString都是Object的子類,並且不會有任何編譯時錯誤。

1

ArrayList temp = new ArrayList();這裏沒有問題。這是一個ArrayList,它將接受任何數據類型,因爲它沒有定義特定的數據類型(原始ArrayList)。

0

是你的數組列表可以同時包含字符串和整數。 但數組列表僅存儲對象的字符串和Integer對象它不支持INT基本數據類型只有ArrayList的

ArrayList<Object> arr=new ArrayList<>(); 
    String s="35"; 
    Integer in=35; 
    arr.add(in); 
    arr.add(s);` 
0

內對象在java中有一名爲Generics的東西,它允許程序員在抽象類。

Arraylist代碼在內部使用它。所以當你沒有定義任何通用類型時,默認類型是Object類的類型。

並且因爲String以及Integer都是Object類的子類,所以根據OOP允許該操作。