我正在尝试为我的应用程序实现一个拦截器,它能够跟踪它看到的对象。我需要能够分辨出我现在看到的对象是新的还是重复使用的。
假设我有一个这样的界面:
public interface Interceptor {
void process(Object o);
}
我一直在考虑添加一个 Set 来跟踪这些对象。但既然我不想用这种行为引起内存泄漏,也许我应该设计一些其他的模式?最后,这些对象可能会在其他层中被破坏。
可能的解决方案似乎:
- 将对象的 hashCode 放入 Set
- 使用 WeakHashSet 而不是 HashSet
第一个选项似乎不是 100% 可靠,因为 hashCode 可能不是唯一的。至于第二个选项,我不确定这会防止内存泄漏。
还有一点,我不能修改对象,不能添加字段、方法。包装也不是一种选择。
有任何想法吗?