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

时间:2018-09-03 09:20:39

标签: java decompiler .class-file

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

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

该行对应

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

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

1 个答案:

答案 0 :(得分:3)

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

public class Foo {

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

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

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

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