Null在反编译的Java类文件中强制转换

阿曼纽尔·内加(Amanuel Nega)

我反编译了其中一个java .class文件,并看到了这一行代码

new ResponseModel("Reset Complete", false, (LinkedHashMap)null)

该行对应于

new ResponseModel("Reset Complete", false, null);

为什么要强制转换null参数?是我的反编译器提示参数类型吗?

彼得·沃尔瑟

想象一下您已经重载了一个方法:

public class Foo {

    public void something (String s) { ... }
    public void something (List l) { ... }
}

调用something一个null说法是,现在不明确的要将调用绑定到任一方法,您需要强制转换null值,并为其指定类型:

new Foo().something((String)null);
new Foo().something((List)null);

由于此类在运行时可能与编译时有所不同(在编译时,方法可能不会重载,但是在运行时该类是具有重载方法的较新版本),因此编译器在字节码中将显式表示,以防止以后含糊不清。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章