The Java tutorial on type erasure doesn\'t seem to detail the specific rules of cast insertion by the compiler. Can someone please explain the specific rules that cause the
MyNode mn = new MyNode(5);
MyNode
which defines the generic type T
of interface Node
as Integer
Node n = (MyNode)mn;
T
and use the interface Node
completely without generics which will have the following consequence: imagine generic type T
to be treated as java.lang.Object
n.setData("Hello");
String
, Integer
, array, anything else)Integer x = mn.data;
nm.data
should return an Integer
type as Integer
is defined as generic type argument T
in the MyNode
classString
instead, the nm.data
holds a String
instanceClassCastException