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所声称的事实上不可能是真的。