泛型的使用1
-
泛型只在编译期间有效,并且在编译期间会验证传入的值是否为泛型类型的值,如果不是对应泛型的值,将会报错:
图1
图2
此时的构造函数的值应该是泛型的类型的值,也就是String类型的值,否则会报错。
2.如下图说明了,泛型在编译成class文件会被擦除,也就是运行的是同一个Class文件,此处和JVM的类加载相关。不赘述
图3
3.如果没有传入对应的泛型,则是Object类型,因为Object能兼容所有类型,所以可以传入任何参数,如下图
图4
4.当接口有泛型时如果其子类没有泛型,实现的接口也不能用泛型,此时默认是Object类型
还有一种情况是子类有泛型,而父类没有泛型,此时实现的接口还是Object类型
最后一种情况是,子类有指定泛型,父类也有指定泛型
那么对应的方法就是T类型,实现父类的方法。
总结第4点:当父类没有泛型的时候,默认继承IGeneric类,父类的泛型默认变成Object,所以不管子类是否有泛型,实现的方法如果带有父类的泛型都是Object