Setコレクションが必要です。そのアイテムはitemsクラスによって識別されます。AppacheコレクションのようなものReferenceIdentityMap
ですが、クラススコープでは、つまり、同じクラスの2つの異なるインスタンスをこのコレクションで同じものとして識別する必要があります。
ご存知のとおり、これはequals()/hashCode()
アイデンティティの原則に違反しますが、時折使用することは理にかなっています。
私はこれを単純なクラスバッキングで行いましMap<Class<? extends E>, E>
たが、単純さのために実装していませんSet<E>
。よりエレガントな解決策があるかもしれません、どんなデコレータSet<E>
も素晴らしいでしょう。
そこにそのようなコレクションの実装はありますか(Apache / Google / something / ...コレクション)?