我正在尝试编写一个方法,将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完成吗?如何?
答案 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
我还注意到,在原始方法声明中,您没有为方法参数定义变量。