java对象(清除所有引用)

wvmv3b1j  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(418)

我有以下问题。我有一张单子,里面有漂亮的波乔。例子:

private ArrayList<Person> persons = new ArrayList();

persons.add(new Person());

现在我想要以下。我从列表中取出一个对象并保存在任何地方

private Person personOne = persons.get(0);

如果我把这个人从列表中删除,我希望所有包含被删除对象引用的变量都返回null。因此,如果我把对象从主源中移除,我希望从所有变量中清除,否则包含它。

persons.remove(0):
// At this point, I want `personOne` to be null.

在minecraft中,bukkit播放器也是如此:如果我得到一个播放器 getServer().getPlayer() 我保存那个播放器,如果播放器离开服务器,所有对它们的引用都是空的。我怎么能做出那样的行为?

ktca8awb

ktca8awb1#

使用weakreference。

private List<Person> persons = new ArrayList<>();

persons.add(new Person());

private WeakReference<Person> personOne = new WeakReference(persons.get(0));

Person pers = personOne.get();
if (pers != null) {
    ...
}

相关问题