gpt4 book ai didi

java - 可变参数函数歧义

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:21 25 4
gpt4 key购买 nike

   public static void main(String[] args) {
System.out.println(fun(2,3,4));
}
static int fun(int a,int b,int c)
{
return 1;
}
static int fun(int ... a)
{
return 0;
}

输出:1

问题:在上面的例子中,为什么 fun 函数选择了第一个函数而不是第二个函数。选择的依据是什么,因为无法确定用户实际想要调用哪个 fun ?

最佳答案

基本上有一个特定调用的偏好。撇开其他不谈,这意味着可以针对少量参数进行优化,避免在执行时毫无意义地创建数组。

JLS 并没有说得很清楚,但它在 section 15.12.2.5 中,如果某些条件成立,则讨论固定元数方法比另一种方法更具体的部分 - 在这种情况下它们确实如此。基本上它更具体,因为有更多调用对可变参数方法有效,就像参数数量相同但参数类型本身更通用一样。

关于java - 可变参数函数歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803135/

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