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

标签 java object

我有一种情况,当有人试图从 bList 中删除对象 b 并且它在其他一些类中使用时,我需要给出错误消息 class 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

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

关于java - 在 java 中删除对象之前检查对象是否在某处使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39565886/

相关文章:

java - 如果同样的任务可以用循环控制结构来完成,为什么还要使用递归呢?

javascript - 创建 JavaScript 日期对象

c++ - 表达式必须有类类型?

php - DOM 返回空对象

r - S3中的美元建议方法

c++ - iostream 不打印到第二个源类中的终端 (c++)

java - Eclipse警告: Cannot be null?

java - 将 MP3 播放列表保存到文件

java - 如何安装jTDS?

java - WebContents 文件夹在 Eclipse 项目 View 中不可见