public class Demo {
public static void main(String[] args) {
Test<Dog> t1 = new Test<>(); //在这里我已经将t1中的a指定为Dog类型
//执行fun1修改其中的a类型为Cat类型,这里Dog和Cat没有继承关系不应该发生类型转换异常吗?
t1.fun1(t1); //正常运行,没有报任何错误。
System.out.println(t1.a); //输出为Cat
}
}
@SuppressWarnings("all")
class Test<E> {
E a;
<T extends Test> void fun1(T t) {
t.a = new Cat();
}
}
class Dog { }
class Cat { }
因为并没有触发任何运行时类型检查
比如你要获取这个变量就会报错了