MyNode mn = new MyNode(5);
- 将创建一个实例,
MyNode
该实例将T
接口的通用类型定义Node
为Integer
- 强制转换:开发人员无需强制转换,编译器无需添加强制转换
Node n = (MyNode)mn;
这基本上会告诉编译器忘记了泛型类型,
T
并且在Node
没有泛型的情况下完全使用了接口,这将产生以下结果: 想象将泛型T
视为java.lang.Object
- 强制转换:开发人员无需强制转换,编译器无需添加强制转换
n.setData("Hello");将允许您添加任何类型的肥胖对象 ,因为T被作为对象处理(
String
,Integer
,阵列,别的)- 强制转换:开发人员无需强制转换,编译器无需添加强制转换
Integer x = mn.data;
nm.data
应该返回一个Integer
类型Integer
被定义为泛型类型参数T
的MyNode
类- 但是,由于您使用的是原始类型,因此您可以添加一个
String
,因此 该 实例 将nm.data
保留String
- 强制转换:开发人员无需强制转换,但是编译器会为您在后台将强制转换添加到Integer,并且由于类型不匹配,您将获得
ClassCastException
- 将创建一个实例,



