java – 如何通过在数组中只引用它来使对象为null?
发布时间:2020-12-15 04:35:20 所属栏目:Java 来源:网络整理
导读:我在GameWorld中有一系列游戏对象,他们可以从那个世界中删除.问题是某些游戏对象引用了其他游戏对象.例如. Player类引用了Bird. Bird会从GameWorld中随机删除,但Player仍然会引用它.我目前进行空检查以检查GameObject是否仍然有效并且在世界上.但是,从数组中
我在GameWorld中有一系列游戏对象,他们可以从那个世界中删除.问题是某些游戏对象引用了其他游戏对象.例如. Player类引用了Bird. Bird会从GameWorld中随机删除,但Player仍然会引用它.我目前进行空检查以检查GameObject是否仍然有效并且在世界上.但是,从数组中删除对象不会使该引用为null.那我怎么能把它变成空?
这是一个例子: // GameWorld creates bird ArrayList<Object> gameObjects = new ArrayList<>(); Object bird = new Object(); gameObjects.add(bird); // Player references it Object referencedBird = gameObjects.get(0); // later in GameWorld,another scope,there is no access to the 'bird' object,trying to remove the bird from the world Object objectToRemove = gameObjects.get(0); gameObjects.remove(0); objectToRemove = null; // back in the Player class Debug.log("is null " + (referencedBird == null)); // false! I need it to be true 解决方法
您不能使对象为null,您只能使引用为null.更新对象的一个??引用不会更改对同一对象的其他引用.
想想它就像我们在手机中都有同一个人的号码:如果我删除号码,它就不会从你的手机中删除.如果我们都删除它,那个人的电话号码就不会停止存在:我们都不能打电话给他们. 你唯一能做的就是: >显式设置referencedBird = null;>或者通过gameObjects.get(0)而不是通过referencedBird变量来引用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |