为了账号安全,请及时绑定邮箱和手机立即绑定

必要时插入类型转换以保持类型安全

必要时插入类型转换以保持类型安全

森林海 2022-07-27 20:44:27
作为关于泛型类型擦除的官方教程,这句话让我很困惑。当类型转换插入可能准确发生时?我尝试了一些简单的泛型用法并javap -c a.class用于检查字节码,但似乎没有像我预期的那样插入类型转换。所谓的重复更多的是关于使用类型转换以确保正确的桥接方法polymorphism,而我想知道第二个语句的确切含义。必要时插入类型转换以保持类型安全。可以提供任何例子来证明它吗?
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

最后,我认为Jon Skeet 的回答消除了困惑。


当使用泛型时,它们被转换为编译时检查和执行时强制转换。


当我们尝试编译a.java和反编译时a.class,我们会看到魔法(编译器帮助自动插入类型转换)。


    List<String> list = new ArrayList<>();

    list.add("hell");

    out.println(list.get(0));

反编译后:


    ArrayList var3 = new ArrayList();

    var3.add("hell");

    System.out.println((String)var3.get(0));

Using Legacy Code in Generic Code 来自官方通用教程:


...只要生成的代码类型不正确,就会插入适当类型的强制转换...


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号