在类型擦除之后,
return (T)number变为
return(Number)number(因为
Number是的类型边界
T),不会引发异常(因为
number是的实例
Integer)。
另一方面,分配
Float f = getNumber();
编译为
Float f = (Float) getNumber();
由于会
getNumber()传回
Number,如果没有强制转换,就无法将其指派给
Float变数。
此转换抛出
ClassCastExceptionwhen
getNumber()不是
Float。
4.6。类型擦除
类型擦除是从类型(可能包括参数化类型和类型变量)到类型(从不参数化类型或类型变量)之间的映射。我们写| T | 用于擦除类型T。擦除映射定义如下…
擦除类型变量(第4.4节)是擦除其最左边界。



