我想知道用什么工具可以查看类型擦除后的代码。例如,我想看看下面的代码在类型擦除后是什么样子。我知道通用类型信息在最终编译之前被剥离,用对象或边界类型替换类型引用,创建桥接方法等。我想在擦除过程发生后查看源代码。
public static void main(String[] args) {
Predicate<Object> objPredicate = (Object c) -> c.toString().length() > 2 ;
Predicate<? super Integer> predicate = objPredicate;
Number n = Integer.valueOf(22);
System.out.println(predicate.test(n)); //this line does not compile
}
Run Code Online (Sandbox Code Playgroud)
[如果需要编译代码才能看到擦除检查工具在示例中工作,则可以省略非编译行或n可以将其转换为Integer]
在github上,我找到了基于java的开源GUI工具字节码查看器,它的工作如下:
public static void main(String[] var0) {
Predicate var1 = (var0x) -> {
return var0x.toString().length() > 2;
};
Integer var3 = 22;
System.out.println(var1.test(var3));
}
Run Code Online (Sandbox Code Playgroud)
为此,我将视图菜单设置为 Pane 2/Fernflower/Java。