东莞市住房建设网站,wordpress 百科,做网站运营是有提成的吗,番禺互联网公司一.类型参数的约束
我们可以对泛型传进来的参数做一些约束#xff0c;比如说
用extends表明传进来的参数类型必须是必须是某个类型的子类型或者本身 当然也可以用接口约束#xff0c;也是用extends表明传进来的参数类型必须实现某个接口。用连接#xff0c;注意class…一.类型参数的约束
我们可以对泛型传进来的参数做一些约束比如说
用extends表明传进来的参数类型必须是必须是某个类型的子类型或者本身 当然也可以用接口约束也是用extends表明传进来的参数类型必须实现某个接口。用连接注意class需要写在接口前面 但是在类的泛型声明中不能使用super 因为泛型擦除后变为ObjectObject又是所有类型的父类型所有类型就都可以作为T这是没有意义的事情
二.泛型方法
在返回类型的前面加上泛型就可以定义泛型方法泛型方法参数中可以使用泛型 需要注意下面的并不是泛型方法只是使用了类中的泛型而已 三.泛型不支持协变
协变逆变抗变等概念是从数学中来的描述的是两个类型集合之间的继承关系。
Animal、Dog , Dog extends Animal
第一个集合为ListAnimal
第二个集合为ListDog
协变(Covariance)ListDog是ListAnimal的子类型逆变(Contravariance): ListAnimal是ListDog的子类型抗变(Invariant): ListAnimal与ListDog二者间没有任何继承关系
由于泛型不支持协变所以下面这样传参是不可以的 但数组是默认支持协变的 四.通配符
事实上我们可以用通配符?来解决刚才的问题?会匹配所有的类型 当然我们可以用extends固定它的上界 也可以用super固定它的下界