需要Java阵列方面的帮助<&燃气轮机;libgdx

需要Java阵列方面的帮助<&燃气轮机;libgdx,java,libgdx,Java,Libgdx,当我在将数组项赋给临时变量后更改其值时,主变量值也会更改 Array<Cards> cards = new Array<Cards>(); //add items to cards Iterator<Cards> iterator = cards.iterator(); while(iterator.hasNext()){ Cards c = iterator.next(); Cards Temp = c; //when

当我在将数组项赋给临时变量后更改其值时,主变量值也会更改

Array<Cards> cards = new Array<Cards>();

//add items to cards

Iterator<Cards> iterator = cards.iterator();
while(iterator.hasNext()){
      Cards c = iterator.next();
      Cards Temp = c;
      //when I change values of temp...the value of c also changes
      //overall changing the value of cards
}
阵列卡=新阵列();
//将项目添加到卡中
迭代器迭代器=cards.Iterator();
while(iterator.hasNext()){
Cards c=迭代器.next();
卡温度=c;
//当我改变温度的值时,c的值也会改变
//全面改变卡的价值
}
有什么方法可以改变温度而不是c或卡的值吗


我目前正在为Android制作一个libgdx游戏。

您需要制作一个
c
引用的对象的副本。您当前所做的只是创建对同一对象的另一个引用。根据
卡的实现和您的需要,您可以执行
克隆
或显式创建新的
卡。

您需要复制
c
引用的对象。您当前所做的只是创建对同一对象的另一个引用。根据
的实现和您的需要,您可以执行
克隆
或显式创建新的

通过调用
.clone()
方法,您可以获得
对象
的副本,而不是对它的引用

正如@CharlesDurham所说:

.clone()
将生成一个浅拷贝,它是一个新的Card实例,但如果c有任何对象引用,新的Card将具有与c相同的引用,除非您实现可克隆接口,否则您可以实现深度克隆


通过调用
.clone()
方法,可以获得
对象的副本,而不是对该对象的引用

正如@CharlesDurham所说:

.clone()
将生成一个浅拷贝,它是一个新的Card实例,但如果c有任何对象引用,新的Card将具有与c相同的引用,除非您实现可克隆接口,否则您可以实现深度克隆


克隆/深度复制?克隆/深度复制?请注意此方法。你会得到所谓的“肤浅”副本。是的,它是
Card
的一个新实例,但是如果
c
有任何对象引用,那么新
Card
将具有与
c
相同的引用。编辑:除非实现
Cloneable
接口,否则可以实现深度克隆。请注意此方法。你会得到所谓的“肤浅”副本。是的,它是
Card
的一个新实例,但是如果
c
有任何对象引用,那么新
Card
将具有与
c
相同的引用。编辑:除非实现
Cloneable
接口,否则可以实现深度克隆。
Array<Cards> cards = new Array<Cards>();

//add items to cards

Iterator<Cards> iterator = cards.iterator();
while(iterator.hasNext()){
      Cards c = iterator.next();
      Cards Temp = c.clone();
      //when i change values of temp...the value of c also changes
      //overall changing the value of cards
}
Array<Cards> cards = new Array<Cards>();

//add items to cards

Iterator<Cards> iterator = cards.iterator();
while(iterator.hasNext()){
      Cards c = iterator.next();
      Cards Temp = new Cards(c);
      //when i change values of temp...the value of c also changes
      //overall changing the value of cards
}