java 无法调用任何重载方法,如下所示:-
class LspTest{
public void add(int a, float b){
System.out.println("First add");
}
public void add(float a, int b){
System.out.println("second add");
}
public static void main(String [] a){
LspTest test = new LspTest();
test.add(1,1);
}
}
Run Code Online (Sandbox Code Playgroud)
请解释我对此感到困惑。
在您的方法中,您有参数(int, float),(float, int)但是在调用方法时,您正在传递两个int (1,1)值。Java 编译器可以在需要时自动将 float 类型转换为 int。但在这种情况下,编译器无法决定自动类型转换哪个 int 浮点数。因此它显示出歧义。
您需要调用它test.add(1f, 1);或test.add(1,1f);指定哪个值是 int 哪个值是浮点数。
PS要指定一个浮点值,你可以f用它来写。