public class GenericTest<E> {int age;String name;E sex;public void a(E n){}public void b(E[] m){}}class Test{//这是main方法,程序的入口public static void main(String[] args) {//GenericTest进行实例化://(1)实例化的时候不指定泛型:如果实例化的时候不明确的指定类的泛型,那么认为此泛型为Object类型GenericTest gt1 = new GenericTest();gt1.a("abc");gt1.a(17);gt1.a(9.8);gt1.b(new String[]{"a","b","c"});//(2)实例化的时候指定泛型:---》推荐方式GenericTest<String> gt2 = new GenericTest<>();gt2.sex = "男";gt2.a("abc");gt2.b(new String[]{"a","b","c"});}}
父类指定泛型
class SubGenericTest extends GenericTest<Integer>{}class Demo{//这是main方法,程序的入口public static void main(String[] args) {//指定父类泛型,那么子类就不需要再指定泛型了,可以直接使用SubGenericTest sgt = new SubGenericTest();sgt.a(19);}}
父类不指定泛型
如果父类不指定泛型,那么子类也会变成一个泛型类,那这个E的类型可以在创建子类对象的时候确定。
class SubGenericTest2<E> extends GenericTest<E>{}class Demo2{//这是main方法,程序的入口public static void main(String[] args) {SubGenericTest2<String> s = new SubGenericTest2<>();s.a("abc");s.sex = "女";}}
ArrayList底层应用就是泛型继承
构造方法中不能写泛型
泛型如果不指定,那么就会被擦除,反应对应的类型为Object类型
不能直接使用E[]的创建
