私はjava.util.Set
(および他のコレクション)を使用したいのですが、ひねりを加えて:contains()
、などが常にadd()
オブジェクトを呼び出したい(つまり、より一般的には平等ではなくアイデンティティに基づいて動作します)。equals()
方法はあると思いますが、大きな欠点があります。これを行う適切な方法はありますか?明らかな何かが欠けている場合は申し訳ありません。
これが私がしたことです:
public class OnlySelfEqual {
public final boolean equals(Object o){
return super.equals(o);
}
}
public class Example{
private Set<T extends OnlySelfEqual> set;
//etc
}
これで私が目にする主な問題(他にもたくさんあるかもしれません)は、すべてのTがインターフェイスを実装するのではなく、クラスから拡張する必要があることです。これはかなり制限があります。私が欲しいのは、サブタイプが実装できない(オーバーライドする)メソッドをリストする「リバース」インターフェースのようなものだと思います。私はそれが存在しないとかなり確信しています。助言がありますか?