A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hy2014051202 中级黑马   /  2017-6-16 19:26  /  609 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

声明一个泛型方法(返回类型以列表为例):

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马