当我们不带泛型的时候,类其实实质就是Class。
泛型的继承
@Data
public class MainType<T> {
T param;
T param2;
List<String> strings;
public T getMyParam(){
return param;
}
static public class SubType1 extends MainType<String>{}
static public class SubType2<E> extends MainType<String>{}
static public class SubType2<T> extends MainType<T>{}
static public class SubType3 extends MainType{}
SubType1 extends MainType<String> class SubType3 extends MainType{} 子类没有泛型,那么 子类等同于普通类,如果父类指定类型,子类就是指定的类型,如果父类没有指定类型,子类object。
static public class SubType2<T> extends MainType<String>{} 和 SubType2<T> extends MainType<T>{} 是一样,需要创建子类的时候指定类型,和普通泛型类一样。
泛型的继承
- 子类可以指定父类的泛型参数,可以是已知类(Integer、String等),也可以用子类自己的泛型参数指定
- 泛型被继承时,且指定父类泛型参数,则额外生成的ParameterizedType类型作为子类的父类;如果没有指定父类泛型参数,则直接继承原生类型
public class MainTest<T> { T param; static public class SubTest1 extends MainTest<String>{} static public class SubTest2<R> extends MainTest<R>{} //SubTest3继承的时原生类型 static public class SubTest3 extends MainTest{} }