Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Exception_Raw Types - Fatal编程技术网

为什么这个java代码不是';不要抛出异常?

为什么这个java代码不是';不要抛出异常?,java,list,exception,raw-types,Java,List,Exception,Raw Types,我在列表中乱搞,得到了以下代码(这是主要代码的一部分): 它仍然有效。很确定这与列表是原始类型有关,但我仍然不明白如何将对象添加到ArrayList(类型:String)。提前感谢。您将l2声明为原始列表。因此,您可以添加任何类型的元素 关于l2和l1的相等性,列出了arraylist类上equals方法的文档,其中说明: 比较指定对象与此列表是否相等。退换商品 当且仅当指定对象也是列表时为true,两个列表 具有相同的大小,且所有对应的两个元素对 名单是平等的 .字符串类是对象类的子类,因此存

我在列表中乱搞,得到了以下代码(这是主要代码的一部分):


它仍然有效。很确定这与列表是原始类型有关,但我仍然不明白如何将对象添加到ArrayList(类型:String)。提前感谢。

您将l2声明为原始列表。因此,您可以添加任何类型的元素

关于l2和l1的相等性,列出了arraylist类上equals方法的文档,其中说明:

比较指定对象与此列表是否相等。退换商品 当且仅当指定对象也是列表时为true,两个列表 具有相同的大小,且所有对应的两个元素对 名单是平等的


.

字符串类是对象类的子类,因此存在对象的继承

您不应该在继承中使用“equals”


更多信息:

问题是,可以通过显式转换(在本例中,我将其称为取消装箱,如在C#中),或者通过Java模拟C#的ToString()方法,将对象转换回字符串。无论哪种方式,都可以成功地将对象转换为字符串,这样运行时就不会抱怨了

如果t是一个转换为对象的数字,那么要么得到一个异常,要么得到该数字的字符串表示形式


必须重写List equality才能调用每个列表中对象的.equals方法。

l1和l2是否完全相同,尽管一个实现为ArrayList,另一个实现为ArrayList?我所说的“完全相同”是指我可以向两者添加任何类型的元素。关于相等性——我不确定作为对象的“a”是否等于作为字符串的“a”。我记得当引用点指向同一个元素时,Object's equals返回true,当类型不同时,这似乎不太可能。@正如这个答案中的引语所说,无论如何声明这些列表,如果它们包含相等的元素,那么它们是相等的<代码>“a”是一个字符串,如果将其分配给
对象
类型变量,则无所谓。请重新检查多态性是什么。事实上,t的运行时类型是字符串,所以比较了两个字符串对象。
List l1 = new ArrayList<Object>();
List l2 = new ArrayList<String>();
Object t = "a";
l1.add("a");
l2.add(t);
System.out.println(l1.equals(l2));
System.out.println(l2.get(0));
Object t = 9;