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

Null在反编译的java类文件中强制转换,java,decompiler,.class-file,Java,Decompiler,.class File,我反编译了一个java.class文件,看到了这行代码 new ResponseModel("Reset Complete", false, (LinkedHashMap)null) 该行对应于 new ResponseModel("Reset Complete", false, null); 为什么要强制转换空参数?这只是我的反编译器提示的参数类型吗?在引擎中,您重载了一个方法: public class Foo { public void something (String s

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

new ResponseModel("Reset Complete", false, (LinkedHashMap)null)
该行对应于

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

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

在引擎中,您重载了一个方法:

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);

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

可能重复@Kaustubh Khara,不一样。我看到了那部分