0

Map インターフェースを実装したいのですが、K と V をインターフェースにバインドします)。ただし、Java コレクション API、具体的には MAP インターフェースでは、ジェネリック型 K および V の代わりに Object を使用して、メソッド パラメーターを最小限に制限していpublic boolean containsValue(Object value)ますpublic boolean containsValue(V value)。そのような場合、コンパイラの型安全性に頼ることはできません。

明確にするために、次のようなものを実装したいと思います。

class MyMap< K , V extends ValueInterface> implements Map<K,V>

ただし、次のようなメソッドを実装する必要があります。

@Override
public boolean containsValue(Object value) {
      // What to do here? 
      ValueInterface v = (ValueInterface ) v; 
      v.getWhatIWant().andDoThing(); 
      // Follow on... 
}

この状況でどのオプションやベスト プラクティスを使用できますか?

4

2 に答える 2

0

実装する場合は、インターフェイス内のすべてのメソッドを実装 Map<K,V>する必要があります。

抽象メソッドに加えて、カスタム動作が必要な非抽象メソッドを拡張 およびオーバーライドできます (契約AbstractMap<K,V>に違反しない限り)。Map

于 2013-08-27T21:37:04.310 に答える