Java重载混淆

Tes*_*stg 4 java overloading

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)

请解释我对此感到困惑。

gpr*_*our 5

在您的方法中,您有参数(int, float)(float, int)但是在调用方法时,您正在传递两个int (1,1)值。Java 编译器可以在需要时自动将 float 类型转换为 int。但在这种情况下,编译器无法决定自动类型转换哪个 int 浮点数。因此它显示出歧义。

您需要调用它test.add(1f, 1);test.add(1,1f);指定哪个值是 int 哪个值是浮点数。

PS要指定一个浮点值,你可以f用它来写。