黑马程序员技术交流社区

标题: 浅谈JAVA泛型方法声明 [打印本页]

作者: hy2014051202    时间: 2017-6-16 19:26
标题: 浅谈JAVA泛型方法声明
声明一个泛型方法(返回类型以列表为例):

    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)那样。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2