Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 如果a将一个对象a转换为对象B,B是否保留了a的ArrayList?_Java_Object_Arraylist - Fatal编程技术网

Java 如果a将一个对象a转换为对象B,B是否保留了a的ArrayList?

Java 如果a将一个对象a转换为对象B,B是否保留了a的ArrayList?,java,object,arraylist,Java,Object,Arraylist,这是我的密码: if (cards.get(i) instanceof ExtensionCard) { ExtensionCard d = (ExtensionCard)cards.get(i); } 在这里,我创建了一个新的扩展卡,他得到了cards.get(I)拥有的ArrayList,代码在这一部分工作得很好 在另一节课上,我在做: if (this.getCards().get(i) instanceof ExtensionCard) { ExtensionCard

这是我的密码:

if (cards.get(i) instanceof ExtensionCard) {
    ExtensionCard d = (ExtensionCard)cards.get(i);
}
在这里,我创建了一个新的
扩展卡
,他得到了
cards.get(I)
拥有的ArrayList,代码在这一部分工作得很好

在另一节课上,我在做:

if (this.getCards().get(i) instanceof ExtensionCard) {
    ExtensionCard d = (ExtensionCard)this.getCards().get(i);
}
这几乎是一样的,但是
d
没有得到
this.getCards().get(i)
所拥有的ArrayList

我需要关于为什么会发生这种情况的帮助。

这里我正在创建一个新的扩展卡,他正在获取ArrayList

不对

您不是在创建新的扩展卡。您正在将
卡的引用赋值给
扩展卡类型的变量。
d
cards.get(i)
都指向同一对象

但是d没有得到这个.getCards().get(i)所拥有的ArrayList


由于它们引用同一个对象,
d
将有一个列表,如果
this.getCards().get(i)
有一个列表。

您如何声明
卡?您希望它包含哪些数据(扩展卡除外)?您可以将其声明为
List
以摆脱类型转换和
instanceof
检查吗?getCards()是一个ArrayList,而Card扩展为ExtensionCard和DeviceCard,因此它可以是其中的一个,这就是为什么我将InstanceFok放在这里,现在您指的是什么“
d
没有获取
this.getCards().get(i)
具有的
ArrayList
”?我的问题是,this.getCards().get(i)得到一张应该是扩展卡的卡,它有各自的数组,所以当我把它引用到d时,它会有他的数组。在我写的第一部分工作正常,但在第二部分数组是空的,但我在前面加了一些东西“
d
将有一个列表,如果
this.getCards().get(I)
有一个列表“mean?
d
是一个
扩展卡
。坦率地说,我不知道这是如何回答这个问题的(这本身并不清楚)。@Mick“d将有一个列表,如果这个.getCards().get(I)有一个列表“意味着它们将具有相同的属性,因为它们是对象的相同实例。他们在每个方面都是完全相同的,所以OP所声称的事实上不可能是真的。