我搜索了这个,但无法找到我需要的东西,所以我创建了一个新帖子。我希望了解这个问题。感谢。
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()
方法时,它运行正常,为什么是这样......
答案 0 :(得分:21)
arraylist
是String元素的ArrayList,因此您无法向其添加数组实例。 arraylist1
是ArrayList
个Object
元素,因此您可以向其添加数组,因为数组是Object
。
如果您希望将数组的各个元素添加到List
,则add
个调用都应更改为addAll
:
arrayList.addAll(Arrays.asList(name));
arraylist1.addAll(Arrays.asList(name1));
答案 1 :(得分:8)
project/Build.scala
错误,因为arraylist.add(name);// error here
是一个数组。不是name
。您正在尝试将Array对象添加到仅接受字符串的ArrayList。
String
没有错误,因为arraylist1.add(name1);// not error
是name1
数组。在Java 中,每个类都是一个Object,甚至一个Object数组也是一个Object 。因此它接受它作为对象。虽然你的 name1 是一个对象数组,但作为一个整体,它本身就是一个对象。
答案 2 :(得分:6)
当你做
时,你好像在想String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here
应该将数组的所有元素添加到列表中。这不是真的。 add
方法只是将它给出的一个参数添加到列表中。
在第一种情况下,一个元素是一个字符串数组。字符串数组本身不是字符串,因此失败。
在第二种情况下,一个元素是一个对象数组。对象数组本身就是一个对象,因此它被添加到列表中。但请注意,添加了数组,而不是其中的对象。
答案 3 :(得分:5)
第一个示例引发错误,因为您声明了ArrayList
Strings
但后来尝试添加Array
Strings
(不是String
,但是它的collection
Strings
。
第二个示例有效,因为您声明了ArrayList
Objects
以及稍后向其添加Objects
(了解Java中的所有内容都是Object
:a {{1 }}也是String
,Object
也是Array
也是Boolean
,你可以尝试在第二个例子中添加Object
而你会看到它也会起作用。)
答案 4 :(得分:2)
在这里,我看到对String
和String[]
的误解两者都不相同,同时看到以下代码
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here
您似乎正在尝试将String[]
对象添加到ArrayList
类型的String
中。如果要将name
数组添加到列表中,则列表类型必须为String[]
。因此,因为类型不同,所以您无法将String[]
对象添加到类型String
的列表中。但是当你有Object
类型的列表时,你当然可以在其中添加任何对象。
答案 5 :(得分:1)
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
成功。