声明一个泛型方法(返回类型以列表为例):
public static <T>List<T> method(T val);
第一个<T>是声明T为泛型,以区别于类名;
第二个List<T>是声明返回类型为一个装有T类型元素的List;
第三个T是指定方法参数为T类型。
举个栗子:
public class A {
}
(1)public static <A> List<A> asList(A... a);
(2)public static List<A> asList(A... a);
(1)中A为“泛型A”,参数可以传入任何类型对象的数组;
(2)则不是,其中A为“类A”,参数只能传入“类A”的对象的数组
但是(2)并不能编译通过
泛型的意思是类型可以在以后指定,但是仍然需要告诉编译器,我需要一个T类型作为占位符
编译器在编译(2)时,List<A>中的T可以换成任何一个类名,asList(A... a)中的A也可以换成任何一个类名,所以编译器并不知道你这个A是个什么吊东西,所以需要声明下,所以需要在前面显式的声明一下(这就是为啥不能省略了),就成了(1)那样。
|
|