java - 我们如何在Java中看到编译器生成的用于类型删除的字节码

标签 java type-erasure

<分区>

Possible Duplicate:
How to view Java's byte code?

我想知道在类型删除后是否可以在类文件中看到java编译器所做的代码更改。

我已经尝试过 javap,但它会使用参数化类型重建原始源文件。

教程 ( http://docs.oracle.com/javase/tutorial/java/generics/genTypes.html) 讨论了在类型删除后用有界类型或对象替换参数化类型。我想看看编译器做了哪些更改,而这些更改在 javap 或任何反编译器中是不可见的。

问候, 萨维克

最佳答案

类型删除的字面意思是从生成的字节码中删除通用类型。值得注意的是它的缺席。因此,您只能看到它不存在于字节码中。

当您使用 javap 时,您会看到一些通用类型信息可用于类、方法和字段签名。这包括在内,以便编译器可以完成使用这些类编译代码的工作。它们在运行时不执行任何操作,尽管它们可通过反射获得,因此您可以编写一个使用此信息的库。

关于java - 我们如何在Java中看到编译器生成的用于类型删除的字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502158/

相关文章:

java - Swagger OpenAPI 模型与 JPA 实体之间的映射

java - Spring 如何在运行时获取有关 "Strongly-typed collection"的通用类型信息?

java - 无法启动组件 - ZipException : invalid LOC header (bad signature)

Java猜数字游戏

java - H2 中 Hibernate ORM 的问题

java - HttpGet get = new HttpGet(url);给予异常(exception)

java - 如何防止类型删除?

c++ - 有没有办法在 C++ 中同时为多个模板分配一个类型?

java - Java 泛型中的桥接方法。这个例子正确吗?

c++ - 在类型删除的小对象优化中调试崩溃