-
泛型只在编译期间有效,并且在编译期间会验证传入的值是否为泛型类型的值,如果不是对应泛型的值,将会报错:
此时的构造函数的值应该是泛型的类型的值,也就是String类型的值,否则会报错。
2.如下图说明了,泛型在编译成class文件会被擦除,也就是运行的是同一个Class文件,此处和JVM的类加载相关。不赘述
3.如果没有传入对应的泛型,则是Object类型,因为Object能兼容所有类型,所以可以传入任何参数,如下图
4.当接口有泛型时
如果其子类没有泛型,实现的接口也不能用泛型,此时默认是Object类型

还有一种情况是子类有泛型,而父类没有泛型,此时实现的接口还是Object类型
一种情况是,子类有指定泛型,父类也有指定泛型
那么对应的方法就是T类型,实现父类的方法。
还有一种情况:
直接在实现父类的方法指定其泛型,如果实现方法有用到父类的泛型,那么就使用指定的泛型
总结第4点:当父类没有泛型的时候,默认继承IGeneric类,父类的泛型默认变成Object,所以不管子类是否有泛型,实现的方法如果带有父类的泛型都是Object