1

このシナリオを想像してみましょう - Java で TreeMap を使用したいと思います。これは、Colletions フレームワークの一部であり、SortedMap インターフェイスの唯一の実装です。

public class MyDictionary extends TreeMap<String, String> {
// some code
}

Dictionary クラスに格納されているエントリを確認するには、Map.Entry の型が必要です。コードのどこかに (MyDictionary クラスのメソッド、またはデータを保持する MyDictionary クラスの変数を含むラッパー クラスのメソッドである可能性が高い) のようなものがあります。

public void showEntries() {
  for (Map.Entry<String, String> e : dictionary) {
    System.out.println(e.getKey(), e.getValue());  // do something
  }
}

そして今、質問: Map.Entry のジェネリック型を TreeMap 用に宣言されたジェネリック型にバインドする方法はありますか?

目標は、ジェネリック型を 1 か所だけで定義することです。

TreeMap に保持されているデータの型を後で変更することにした場合、それらの型を使用したすべての場所を検索する必要はありません。

上記の例は概念実証です。助けてください。

4

2 に答える 2

3

MyDictionary一致する型パラメーターを使用して、クラスをジェネリックにすることができますTreeMap

public class MyDictionary<K, V> extends TreeMap<K, V>

その後、クラス全体でこれらの型パラメーターを参照できます。具体的には:

for (Map.Entry<K, V> e : dictionary) {

または、キーと値が常に同じ型になることがわかっている場合:

public class MyDictionary<E> extends TreeMap<E, E>

for (Map.Entry<E, E> e : dictionary) {
于 2013-05-29T20:12:23.820 に答える