小白学java第43天
自定义泛型:
基本语法:class 类名<T,R...>{}//...表示可以由多个泛型
注意:
1.普通成员可以使用泛型(属性、方法)
2.使用泛型的数组,不能初始化
3.静态方法中不能使用类的泛型
4.泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)
5.如果在创建对象时,没有指定类型,默认为Object
自定义泛型接口:
基本语法:interface 接口名<T,R...>{}
注意:
1.接口中,静态成员也不能使用泛型
2.泛型接口的类型,在继承接口或者实现接口时确定
3.没有指定类型,默认为Object
自定义泛型方法:
基本语法:修饰符<T,R>返回类型 方法名(参数列表){}
注意:
1.泛型方法可以定义在普通类中,也可以定义在泛型类中
2.当泛型方法被调用时,类型会确定
3.public void eat(E e){},修饰符后没有<T,R...>,该方法不是泛型方法,而是使用了泛型
4.泛型方法可以使用类声明的泛型,可以使用自己声明泛型
继承性与通配符:
1.泛型不具备继承性
2.<?> : 支持任意泛型类型
3. <? extends A> : 支持A类以及A类的子类,规定了泛型的上限
4.<? super A> : 支持A类以及A类的父类,不限于直接父类,规定了泛型的下限