我有一种情况,当有人试图从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
您还可以使用它来跟踪尚未收集垃圾的所有密钥.这可以为您提供有关哪些项目已被垃圾回收(无法访问后)的信息.但是,由于垃圾收集器可能在任意时间运行,因此信息将不是实时的.