java - 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()
并保存了该玩家,如果该玩家离开了服务器,所有对他们的引用都是空的。我怎样才能做出这种行为?
解决方案
使用弱引用。
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) {
...
}
推荐阅读
- google-sheets - 获取每月金额的总和 - Google 表格
- angular - ion-back-button 从 C 跳过 B 回到页面 A - ionic 5
- python - 为什么我的 Tkinter 按钮图像没有更新?
- python - 如何从深度相机获取世界系统中的深度坐标
- c++ - TextOut 到设备上下文的中心
- typescript - 打字稿参数相互依赖
- java - 编译器运行没有输出
- c# - Entity Framework Core 3.1.5:如何从 linq 查询中取出表集合逻辑以避免客户端评估错误?
- python - KeyError: 'pdf' 正在显示;代码以前可以工作 - 为什么?
- go - 如何在一段时间内分配间隔?