gpt4 book ai didi

java - 重载原始变量

转载 作者:行者123 更新时间:2023-11-29 08:07:00 24 4
gpt4 key购买 nike

代码是

public class TestOverload {

public static void print(Float f, double d) {
System.out.println("Float,double");
}

public static void print(float f, double d) {
System.out.println("float,double");
}

public static void print(int f, double d) {
System.out.println("int,double");
}
// public static void print(int f, float d) {
// System.out.println("int,float");
// }

public static void print(double d1, double d) {
System.out.println("double,double");
}

public static void print(float d1, float d) {
System.out.println("float,float");
}

public static void main(String[] args) {
TestOverload.print(2, 3.0);

TestOverload.print(2, 3.0f);//Compiler error:The method print(float, double) is ambiguous for the type TestOverload
}
}

为什么它给出错误,而应该选择 print(float d1, float d)

附言:在上面的代码中,如果我评论:

//  public static void print(int f, double d) {
// System.out.println("int,double");
// }

然后调用 print(float d1, float d)...

最佳答案

print(2, 3.0f);

可以是 print(int, float)print(float, double) 因为隐式类型转换是在后台完成的。 int 可以转换为 float。 Javac(或编译器)无法确定您指的是哪一个。

如果您想自己选择,可以添加类型转换:

print((float) 2, (float) 3.0f);

(请注意,不需要第二次转换 (float => float)。)

关于java - 重载原始变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10479234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com