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

作为关于泛型类型擦除的官方教程,这句话让我很困惑。当类型转换插入可能准确发生时?我尝试了一些简单的泛型用法并javap -c a.class用于检查字节码,但似乎没有像我预期的那样插入类型转换。

所谓的重复更多的是关于使用类型转换以确保正确的桥接方法polymorphism,而我想知道第二个语句的确切含义。

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

可以提供任何例子来证明它吗?


森林海
浏览 108回答 1
1回答

鸿蒙传说

最后,我认为Jon Skeet 的回答消除了困惑。当使用泛型时,它们被转换为编译时检查和执行时强制转换。当我们尝试编译a.java和反编译时a.class,我们会看到魔法(编译器帮助自动插入类型转换)。&nbsp; &nbsp; List<String> list = new ArrayList<>();&nbsp; &nbsp; list.add("hell");&nbsp; &nbsp; out.println(list.get(0));反编译后:&nbsp; &nbsp; ArrayList var3 = new ArrayList();&nbsp; &nbsp; var3.add("hell");&nbsp; &nbsp; System.out.println((String)var3.get(0));Using Legacy Code in Generic Code 来自官方通用教程:...只要生成的代码类型不正确,就会插入适当类型的强制转换...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java