加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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变量来引用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读