有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类型反编译器支持Java 6中的<>s

我有一些我一直在反编译的类文件,但我发现<>;我的集合、列表、迭代器等旁边的s没有显示在输出中

我试过CFR、Procyon、JD-GUI和FernFlower

在尝试重新编译这些类时,编译器没有这样做,因为我的<>;有人失踪了

更新:The<>;在Java 7反编译文件中显示,但在Java 6文件中不显示,如下所示:

Java 7中的类: Class in Java 7

Java 6中的类: Class in Java 6

有人知道我为什么可能得不到<>;输出中有什么


共 (2) 个答案

  1. # 1 楼答案

    因为第一步是

    Replace all type parameters in generic types with their bounds or Object if the type parameters are unbounded. The produced bytecode, therefore, contains only ordinary classes, interfaces, and methods.

  2. # 2 楼答案

    这看起来像是反编译程序中的错误。你在这两种情况下使用的是同一个版本吗

    对于公共字段(就像方法一样),类型注释会被保留(因为需要根据类进行编译)

    但请注意,注释不会保留在赋值的右侧(因为它不是类签名的一部分)