[英]ArrayList and String[] AND Object[]
我搜索了這個,但找不到我需要的東西,所以我創建了一個新帖子。 我希望了解這個問題。 謝謝。
ArrayList<String> arraylist= new ArrayList<String>();
arraylist.add("Nguyen");
arraylist.add("Viet");
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here
ArrayList<Object> arraylist1=new ArrayList<Object>();
arraylist1.add("Nguyen");
arraylist1.add("Viet");
Object[] name1={"Quan","Doan","Thi","Ha"};
arraylist1.add(name1);// not error
有人可以解釋當我將name
傳遞給add()
方法然后我得到一個錯誤,但是當我將name1
傳遞給add()
方法時,它工作正常,為什么會這樣...
arraylist
是String元素的ArrayList,因此您無法向其添加數組實例。 arraylist1
是Object
元素的ArrayList
,因此您可以向其添加數組,因為數組是Object
。
如果您希望將數組的各個元素添加到List
,則兩個add
調用都應更改為addAll
:
arrayList.addAll(Arrays.asList(name));
arraylist1.addAll(Arrays.asList(name1));
arraylist.add(name);// error here
錯誤,因為name
是一個數組。 不是String
。 您正在嘗試將Array對象添加到僅接受字符串的ArrayList。
arraylist1.add(name1);// not error
沒有錯誤,因為name1
是一個Object
數組。 在Java中, 每個類都是一個Object,甚至一個Object數組也是一個Object 。 因此它接受它作為對象。 雖然你的name1是一個Objects數組,但作為一個整體,它首先是一個Object。
當你這樣做時,你似乎在想
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here
它應該將數組的所有元素添加到列表中。 這不是真的。 add
方法只是將它給出的一個參數添加到列表中。
在第一種情況下,一個元素是一個字符串數組。 字符串數組本身不是字符串,因此失敗。
在第二種情況下,一個元素是一個對象數組。 對象數組本身就是一個對象,因此它被添加到列表中。 但請注意,添加了數組 ,而不是其中的對象。
第一個示例拋出一個錯誤,因為您聲明了一個Strings
的ArrayList
,但后來嘗試添加一個Strings
Array
(不是String
,但是一collection
Strings
)。
第二個例子是有效的,因為你聲明了Objects
ArrayList
,然后你向它添加了Objects
(理解Java中的所有東西都是一個Object
:一個String
是一個Object
,一個Array
也是例如一個Boolean
也是一個Object
,你可以嘗試添加在第二個示例中為True
,您將看到它也可以工作)。
在這里,我看到一些對String
和String[]
誤解都不相同,同時看到你的下面的代碼
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here
好像你正試圖添加String[]
對象為ArrayList
類型的String
。 如果要將name
數組添加到列表中,則列表類型必須為String[]
。 因此,因為類型不同所以你不能將String[]
對象添加到String
類型的列表中。 但是當你有Object
類型的列表時,你當然可以在其中添加任何對象。
IDE清楚地告訴我們對象數據類型。
第一個代碼片段
In this error code snippet:
ArrayList<String> arraylist= new ArrayList<String>();
arraylist.add("Nguyen");
arraylist.add("Viet");
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);
在第6行,名為arraylist
對象具有類型ArrayList<java.lang.String>
但您嘗試這樣的事情: ArrayList<java.lang.String[]>
導致不兼容數據類型錯誤。
第二個代碼段
ArrayList<Object> arraylist1=new ArrayList<Object>();
arraylist1.add("Nguyen");
arraylist1.add("Viet");
Object[] name1={"Quan","Doan","Thi","Ha"};
arraylist1.add(name1);
當步驟調試到第10行時, name1
的數據類型為java.lang.Object
, arraylist1
數據類型為ArrayList<Object>
。 因此,將元素name1
添加到arraylist1
成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.