泛型回顾

使用:

(1)泛型约束
注意最外层的引用类型约束会影响内部泛型函数的约束

值类型约束
//声明

//使用
写引用类型就会报错了,因为约束为值类型

同理,泛型函数中的类型不对应也会报错,前面对泛型函数的参数也做了约束

这样就不会报错

************************************************************
引用类型约束

使用:

**********************************************************
公共的无参构造约束
注意:必须是两个条件,一个是公共的,一个是无参构造

另外声明两个类,其中一个里面有默认的无参构造函数,另一个写了有参构造函数,导致无参构造函数会被顶掉。

//使用;
不会有问题,因为默认就会有个无参构造函数

用test2就会报错,因为test2重新声明了有参构造函数,无参被顶掉了
![]()
里面可以写结构体,因为结构体的默认构造函数顶不掉,不管有没有声明带有参数的构造函数,结构体的无参构造函数永远都在。同时不能是abstract抽象类型

**************************************************
类约束


必须是类或者是该类的派生类
![]()
****************************************************************
接口约束


如果是接口约束,那么使用时类型只能是该接口或者该接口的派生类

*****************************************************
另一个泛型字母
要么这个T是U本身,要么这个T是U的派生类型

使用:

*******************************************************
(3)约束的组合使用
表示,既要是引用类型,也要是无参公共非抽象构造函数

并不是所有类型都是可以组合使用的,如下:
因为结构体本身就有无参公共非抽象构造函数,这就显得多余了

注意:一般new()一般写在最后
***************************************************
多个泛型有约束
记住泛型约束的写法:where 泛型字母:约束的类型

*********************************************************

浙公网安备 33010602011771号