三、泛型接口
1、基本语法:
public interface 接口名<类型参数> {...
}
2、泛型接口中的类型参数,在该接口被继承或者被实现时确定。解释如下:
(1)在泛型接口中,静态成员也不能使用泛型接口定义的类型参数。
(2)定义一个接口 A 继承了 泛型接口 USA,在 接口 A 定义时必须确定泛型接口 USA 中的类型参数。
(3)定义一个类 B 实现了 泛型接口 USB,在 类 B 定义时需要确定泛型接口 USB 中的类型参数。
(4)定义一个类 C 实现了 泛型接口 USC时,若是没有确定泛型接口 USC中的类型参数,则默认为 Object。
(5)定义一个类 D 实现了 泛型接口 USD时,若是没有确定泛型接口 USD中的类型参数,也可以将 D 类也定义为泛型类,其声明的类型参数必须要和接口 USD中的类型参数相同。
四、泛型方法
1. 泛型方法的定义
当在一个方法签名中的返回值前面声明了一个 <T> 时,该方法就被声明为一个泛型方法。<T>表明该方法声明了一个类型参数 T,并且这个类型参数 T 只能在该方法中使用。当然,泛型方法中也可以使用泛型类中定义的泛型参数。
(1)只有在方法签名中声明了< T >的方法才是泛型方法,仅使用了泛型类定义的类型参数的方法并不是泛型方法。
(2)泛型方法中可以同时声明多个类型参数。
(3)泛型方法中也可以使用泛型类中定义的泛型参数。
(4)特别注意的是:泛型类中定义的类型参数和泛型方法中定义的类型参数是相互独立的,它们一点关系都没有。
注意事项:
1. < T >表明该方法声明了一个类型参数 T,并且这个类型参数 T 只能在该方法中使用。
2. 为了避免混淆,如果在一个泛型类中存在泛型方法,那么两者的类型参数最好不要同名。
3. 与泛型类的类型参数定义一样,此处泛型方法中的 T 可以写为`任意标识`,常见的如 T、E、K、V 等形式的参数常用于表示泛型。
2. 泛型方法的使用
泛型类,在创建类的对象的时候确定类型参数的具体类型;
泛型方法,在调用方法的时候再确定类型参数的具体类型。
3. 泛型方法中的类型推断
在调用泛型方法的时候,可以显式地指定类型参数,也可以不指定。
当泛型方法的形参列表中有多个类型参数时,在不指定类型参数的情况下,方法中声明的的类型参数为泛型方法中的几种类型参数的共同父类的最小级,直到 Object。
在指定了类型参数的时候,传入泛型方法中的实参的数据类型必须为指定数据类型或者其子类。
原文链接:https://blog.csdn.net/weixin_45395059/article/details/126006369