我有一些我反编译的类文件,但是我发现我的集合,列表,迭代器等旁边的<> s没有显示在输出中。
我尝试过CFR,Procyon,JD-GUI和FernFlower。
尝试重新编译这些类时,编译器无法提及我的<> s缺失的问题。
更新:<> s显示在Java 7反编译文件中,但不在Java 6反编译文件中,如下所示:
Java 7中的类:
Java 6中的类:
有谁知道为什么我可能没有在输出中获得<> s?
答案 0 :(得分:0)
由于Type-Erasure的第一步是<{p}},您无法获得<>
(s)
如果类型参数是无界的,则将泛型类型中的所有类型参数替换为其边界或
Object
。因此,生成的字节码只包含普通的类,接口和方法。
答案 1 :(得分:0)
这看起来像反编译器中的一个错误。你在两种情况下都使用相同的版本吗?
对于公共字段(就像方法一样),类型注释被保留(因为它们需要针对类进行编译)。
但请注意,注释的右侧不会保留注释(因为它不是类签名的一部分)。