需要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
}