泛型继承
Posted zhangyugeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型继承相关的知识,希望对你有一定的参考价值。
1.泛型继承
package demo; /** * 泛型继承 * 1.全保留 * 2.部分保留 * 3.具体类型 * 4.没有类型 */ /*父类一般定义为抽象类*/ public abstract class Father<T1,T2> { T2 name; public abstract void test(T1 age); //抽象方法只定义方法,没有方法体 } //全保留 //子类可以继续添加泛型类型class c1<T1,T2,A,B> 富二代 class c1<T1,T2> extends Father<T1,T2>{ @Override public void test(T1 age) { //this.name=0; 全保留,不能这样用 } } //部分保留 class c2<T1> extends Father<T1,String>{ @Override public void test(T1 age) { //this.name="222"; //引用父类属性,类型随父类而定 } } //具体类型 class c3 extends Father<Integer,String>{ @Override public void test(Integer age) { } } //没有类型 //泛型擦除 class c4 extends Father{ @Override public void test(Object age) { } }
2.通配符
<?>(用于变量或形参)
List<?> list=new ArrayList<String>();
List<?> list=new ArrayList<Long>();
3.泛型上限
class Test<T extends Fruit>{ } //Fruit 有多个子类 <=
Test的T不能是Fruit的父类,只能用于小于Fruit的子类。
public static void test(List<? extends Fruit> list) { } //方法
List<? extends Fruit> list=new ArrayList<apple>();
4.泛型下限
super
public static void test(List<? super Fruit> list) { } //方法
假如Fruit没有其他父类,用的类型定义只能Object.
5.泛型嵌套
以上是关于泛型继承的主要内容,如果未能解决你的问题,请参考以下文章
对于泛型+非泛型,是不是/为啥需要从两次继承 WebViewPage?