在Java中,我们具有WeakHashMap内置数据结构。我已经阅读了有关它的文档。我想知道weakhashmap的实际用例是什么??
答案 0 :(得分:1)
通常的用例是将与对象有关的信息与对象本身分开存储,而不将对象锁定在内存中。您要这样做的原因有两个:
private
字段可以通过反射来访问)粗略的概念示例:
class Example {
private static WeakHashMap<Example, Data> details = new WeakHashMap<>();
private static class Data {
// ...private information...
}
public Example() {
Data d = new Data();
details.set(this, d);
}
public void doSomething() {
Data d = details.get(this);
if (d == null) {
throw new IllegalStateException();
}
// ...do something...
}
}
由于键被弱锁,因此即使调用方在地图中将其用作键,调用方释放其引用仍可以对其进行垃圾回收。
可能值得注意的是,您至少要使界面或其他内容不清楚,因为...可以通过反射来访问私有字段,因此可以从{{ 1}},然后使用对象引用从中获取details
对象。稍微提高标准。 :-)