public Box<T>{
private T t;
public void setBox(T t){
this.t = t;
}
public List<T> toList(){
List<T> list = new ArrayList<>();
list.add(t);
return list;
}
}
在这个简单的代码中,这个toList()
方法是通用的还是不通用的?
谢谢...
答案 0 :(得分:6)
不,您的toList
不是通用方法。
Java Language Specification,Java SE 8版,Section 8.4.4说:
如果方法声明了一个或多个类型变量,则该方法是通用的。
因此,泛型方法具有自己的类型参数,但您的toList
仅使用类的类型参数。因此,它不是一般的方法。
Lutz Horn在评论中链接的tutorial也解释了这一点。 generic methods部分说:
就像类型声明一样,方法声明可以是通用的 - 也就是说,由一个或多个类型参数参数化。
这确认了一个方法是通用的,如果它有自己的类型参数。
以下是通用方法的示例:
public static <T> List<T> boxToList(Box<T> box) {
return box.toList()
}