首页 > 解决方案 > Java 销毁对象(清除所有引用)

问题描述

我有以下问题。我有一个包含漂亮 POJOS 的列表。例子:

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()并保存了该玩家,如果该玩家离开了服务器,所有对他们的引用都是空的。我怎样才能做出这种行为?

标签: javareferencebukkit

解决方案


使用弱引用

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) {
    ...
}

推荐阅读