java将对象传递到类中,它们只是对原始对象的引用吗?
这个类包含一个level
中的所有characters
和objects
CollisionListener
是一个接口,每当角色与另一个对象发生冲突时都会调用CollisionListener.beginContact()
我想知道,既然我将level
传递到CollisionListener
,这是否意味着内存中存储了两个对象
或者private Level level
内CollisionListener
只是对原始level
的引用?JVM如何在内部处理这个问题
因为当我在CollisionListener
内修改level
时,原始的level
也会更新
public class Level extends World {
private Player player;
private Enemy enemy;
public Level(){
this.setContactListener(
new CollisionListener(this));
player = new Player();
enemy = new Enemy();
}
/**
* Move characters
*/
public update(){
player.update();
enemy.update();
}
}
这是一个interface
,它被添加到我的Level
对象中。它需要对Level
对象的引用,以便可以调用level.doSomething()
public class CollisionListener implements ContactListener{
private Level level;
public CollisionListener(Level level){
this.level = level;
}
public void beginContact(Contact contact) {
this.level.doSomething();
}
/* other interface methods .. */
}
# 1 楼答案
当然是。您总是只处理对对象的引用并复制这些引用。在C/C++中,可以将引用与指针进行比较
如果不希望发生这种情况,请创建
Level
实例的副本,例如使用Clonable
接口