这是因为重载解析解决了您的
println调用
println(Object),因为没有
println(Integer)。
请记住,Java的泛型会在运行时删除。像这样
(E)"Foo"的演员阵容将被删除,并移至呼叫站点。有时这不是必需的,因此仅在需要时才将内容转换为正确的类型。
换句话说,在内部不执行任何强制转换
getFoo。语言规范支持:
第5.5.2节:已 检查的演员表和未检查的演员表
- 演员表是完全未经检查的演员表。
对于此类转换,不执行任何运行时 *** 作。
删除后,
getFoo返回
Object。并将其传递到中
println(Object),这完全可以。
如果调用此方法并通过
foo.getFoo, 则会 收到错误消息:
static void f(Integer i) { System.out.println(i);}// ...f(foo.getFoo()); // ClassCastException
因为这一次 需要 投射
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)