我们需要特别指出一下,前面的第二章节有一个抽检品案例中有这样一个方法:
这个方法中虽然有T泛型标识,但是它仅仅是一个普通的成员方法,方法返回类型是T,采用了泛型类的泛型类型。
泛型方法的语法
泛型方法的案例
泛型方法定义我们就写在第二章节里面的奖品泛型类中,
泛型方法定义
泛型方法中的泛型标识用E,为了区别下泛型类中的泛型标识
泛型方法调用
上面我们把泛型方法的泛型类型标识 与泛型类的泛型标识分别用E和T做了区分,倘若,我们把标识都改为T会怎么样呢?
所以泛型方法的泛型类型 是独立于 泛型类的泛型的,即使泛型标识一样但是不会相互干扰
泛型方法优点
定义一个泛型方法,可以操作不同的数据类型
调用泛型类中的普通成员方法(与调用泛型方法做对比)
经过对比,在总结一句:调用普通成员方法,强制要求采用的泛型必须遵从类的泛型;但是泛型方法里的泛型,都是我们在调用时去独立指定的。
语法补充
解释下为什么泛型类中的,返回值为T的普通成员方法不能使用静态的?
因为泛型类在创建对象时指定类型,而静态方法是通过类名直接调用,此时成员方法类型还未被指定,会报错。
为什么泛型方法可以使用静态的?
泛型方法在被调用时直接指定参数。
对泛型列表进行扩展
泛型方法与可变参数
泛型方法总结
1、泛型方法能使方法独立于类而产生变化
所以我们在工作中能够使用泛型方法就使用泛型方法,尽量不要再去定义泛型类,泛型方法更加灵活
2、如果static方法要使用泛型能力,就必须使其成为泛型方法