我有一种情况,当有人试图从 b 中删除对象 bList 并且它在其他一些类中使用时,我需要给出错误消息,比如类 A
如果 b 没有在另一个类中引用,那么我不应该抛出错误消息。

上述场景的伪代码

public class A {

    B b;

    void setB(B b) {
        this.b = b;
    }
}

public class NotifyTest {

    List<B> bList = new ArrayList<>();

    String notifyTest() {

        A a = new A();
        B b = new B();
        a.setB(b);
        bList.add(b);

        if (b referencedSomewhere)
        {
            return "error";
        }
        else
        {
             bList.remove(b);
             return  "success";
        }
    }
}

遍历我的整个模型以检查对象 b 是否在某处使用会影响性能,所以我不想采用这种方法。
请让我知道 Java 是否提供了针对此场景的任何解决方案,或者建议更好的方法来处理此问题。

Edit1:当在 bList 以外的任何其他地方引用 b 时,我需要一条错误消息

最佳答案

如果您的目的是从列表中自动释放不再引用的项目,您可以使用 https://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html

您还可以使用它来跟踪尚未垃圾收集的所有键。这可以为您提供有关哪些项目已经被垃圾回收的信息(在变得无法访问之后)。但是,信息不会是实时的,因为垃圾收集器可能会在任意时间运行。

10-08 18:33