【问题标题】:Null is casted in decompiled java class fileNull 在反编译的 java 类文件中被强制转换
【发布时间】:2018-09-03 09:20:39
【问题描述】:

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

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

行对应

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

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

【问题讨论】:

标签: java decompiler .class-file


【解决方案1】:

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

public class Foo {

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

使用null 参数调用something 现在不明确。 要将调用绑定到任一方法,您需要强制转换空值,并为其指定类型:

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

由于这个类在运行时可能与编译时不同(在编译时,该方法可能没有被重载,但在运行时该类是具有重载方法的较新版本),编译器在字节码中使其显式以防止以后出现歧义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多