有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java WeakHashMap的实际用途是什么?

在java中,我们有WeakHashMap内置的数据结构。我读过有关它的文件。我想知道weakhashmap的实际用例是什么


共 (1) 个答案

  1. # 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...
        }
    }
    

    由于键的保存很弱,即使对象在映射中用作键,如果调用方释放它们的引用,仍然可以对对象进行垃圾收集

    也许值得一提的是,你希望至少在界面或其他东西后面隐藏上面的内容,因为。。。私有字段可以通过反射访问,因此可以从Example获取details,然后使用对象引用从中获取Data对象。提高了一点标准。:-)