在java中删除对象之前检查某个对象是否被使用

我有一种情况,当有人试图从bList中删除一个对象b时,我需要给出一条错误消息,并且在其他一些类中使用它,比如说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:当b在bList以外的任何其他地方被引用时,我需要一条错误消息

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

您还可以使用它来跟踪尚未收集垃圾的所有密钥.这可以为您提供有关哪些项目已被垃圾回收(无法访问后)的信息.但是,由于垃圾收集器可能在任意时间运行,因此信息将不是实时的.

点赞