1

MyInterface のサブクラスをパラメーターとして受け取るメソッドを作成しようとしていますが、構文エラーが発生します。

public Map<String, List<T extends MyInterface>> makeMap(List<T extends MyInterface>) {

  Map<String, List<T extends MyInterface>> myMap = ...

  return myMap;

}

この構文は無効です。シグニチャは、「misplaced construct」というエラーを示します。しかし、アイデアは、T の代わりに MyInterface の任意のサブクラスを渡すことができるということです。これを Java で行うことはできますか? どうやって?

4

2 に答える 2

6

ジェネリック型を宣言し、そのジェネリック型を参照するという概念を混同しています。メソッドをジェネリックにしたい場合、戻り値の型の前にジェネリック型パラメーターを宣言し、それを他の場所と同じように単純に参照しTます。

//      Declaration                            ref              ref
public <T extends MyInterface> Map<String, List<T>> makeMap(List<T>) {
  //              ref
  Map<String, List<T>> myMap = ...

  return myMap;

}
于 2013-04-09T19:55:40.943 に答える
3
public <T extends MyInterface> Map<String, List<T>> makeMap(List<T> myList) {

ジェネリックメソッドの詳細はこちら

また、元のメソッド宣言では、メソッド パラメーターに変数が定義されていないことにも気付きました。

于 2013-04-09T19:54:25.357 に答える