Java - 传递通用参数

时间:2013-04-09 19:51:17

标签: java generics

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

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

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

  return myMap;

}

此语法无效。签名给出错误&#34;错位的构造&#34;。但是,我的想法是我可以传递MyInterface客栈T的任何子类。这可以用Java完成吗?如何?

2 个答案:

答案 0 :(得分:6)

您正在混淆声明泛型类型并引用该泛型类型的概念。假设您希望该方法是通用的,在返回类型之前声明泛型类型参数,然后在其他地方明确地将其称为T

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

  return myMap;

}

答案 1 :(得分:3)

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

有关通用方法的更多信息here

我还注意到,在原始方法声明中,您没有为方法参数定义变量。