我正在嘗試爲我的應用程序實現一個攔截器,這將能夠跟蹤它所看到的對象。我需要知道,我現在看到的對象是新東西還是重用的對象。跟蹤已經看到的對象
假設我有這樣一個接口:
public interface Interceptor {
void process(Object o);
}
我一直在想加入一個Set會跟蹤這些對象。但是由於我不想引起這種行爲的內存泄漏,也許我應該設計一些其他模式?最後,這些對象可能會在其他層被銷燬。
可能的解決方案似乎:
- 把一個對象的hashCode入套
- 使用WeakHashSet,而不是一個HashSet
第一選擇似乎不是100%可靠的,因爲的hashCode可能不獨特。至於第二個選項,我不確定這會阻止memleaks。
還有一點需要注意的是,我無法修改對象,我無法添加字段,方法。包裝也不是一種選擇。
任何想法?
請參閱上文。 get()方法會給你一個null –