栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么对泛型的这种使用不会引发运行时或编译时异常?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么对泛型的这种使用不会引发运行时或编译时异常?

这是因为重载解析解决了您的

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

因为这一次 需要 投射



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454536.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号