ss GenericTest {
/**
* 这个泛型类中的泛型需要执行某些方法,但是必须 是实现了testInterface接口
*
* @param t
*/
static
void doIt(T t) {
// //一旦T确定了,那么编译器便可以确定在类中或者方法中使用的类型的内部一致性
// //换句话说,就是这个类所有的T都被编译前替换了
System.out.println("Dobefore!");
t.doSomething();
System.out.println("Doafter!");
}
}
7.类型系统
在Java中,大家比较熟悉的是通过继承机制而产生的类型体系结构。比如String继承
自Object。根据Liskov替换原则,子类是可以替换父类的。当需要Object类的引用的
时候,如果传入一个String对象是没有任何问题的。但是反过来的话,即用父类的引
用替换子类引用的时候,就需要进行强制类型转换。编译器并不能保证运行时刻这
种转换一定是合法的。这种自动的子类替换父类的类型转换机制,对于数组也是适
用的。String[]可以替换Object[]。但是泛型的引入,对于这个类型系统产生了一定的
影响。正如前面提到的List
是不能替换掉List