Java——传递泛型参数

Java——传递泛型参数,java,generics,Java,Generics,我试图编写一个方法,将MyInterface的任何子类作为参数,但会出现语法错误 public Map<String, List<T extends MyInterface>> makeMap(List<T extends MyInterface>) { Map<String, List<T extends MyInterface>> myMap = ... return myMap; } 此语法无效。签名给出了错误的错

我试图编写一个方法,将MyInterface的任何子类作为参数,但会出现语法错误

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

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

  return myMap;

}
此语法无效。签名给出了错误的错位构造。但是,我的想法是我可以在T的地方传递MyInterface的任何子类。这可以在Java中完成吗?怎么做

public <T extends MyInterface> Map<String, List<T>> makeMap(List<T> myList) {
更多关于泛型方法的信息

我还注意到,在最初的方法声明中,没有为方法参数定义变量

更多关于泛型方法的信息


我还注意到,在最初的方法声明中,没有为方法参数定义变量。

您混淆了声明泛型类型和引用该泛型类型的概念。假设您希望该方法是泛型的,请在返回类型之前声明泛型类型参数,然后在其他地方将其简单地称为T:

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

  return myMap;

}

您混淆了声明泛型类型和引用该泛型类型的概念。假设您希望该方法是泛型的,请在返回类型之前声明泛型类型参数,然后在其他地方将其简单地称为T:

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

  return myMap;

}

好吧,很简单。工作完美。谢谢,很简单。工作完美。谢谢