gpt4 book ai didi

java方法重载: abnormal behaviour

转载 作者:行者123 更新时间:2023-11-29 07:45:39 26 4
gpt4 key购买 nike

我尝试了以下两种情况:

void ssss(int b){
System.out.println ("int"+b);
}
void ssss(double b){
System.out.println ("long"+b);
}

并调用了一个方法

ssss(100);

这很好用。

void calcAve(double marks1, int marks2) {
System.out.println ("first average");
}
void calcAve(int marks1, double marks2) {
System.out.println ("second average");
}

并进行方法调用

calcAve(2,3);

这返回了编译错误:对 calcAve 的引用不明确。

了解为什么第二个会出现编译错误。我的问题是使用相同的类比,第一种情况也应该返回错误,但事实并非如此。为什么??

最佳答案

直观地,在第一种情况下有一个精确的类型匹配,而在第二种情况下有两个同样好的不精确匹配(两个 int 中的任何一个都可以提升为 ).

确切的规则相当复杂,但您可以在 JLS 中找到它们:§15.12.2. Compile-Time Step 2: Determine Method Signature .

解决歧义的一种方法是更改​​参数的类型:

calcAve(2.0, 3);
calcAve(2, 3.0);

关于java方法重载: abnormal behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26113652/

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