gpt4 book ai didi

java - 可变参数函数参数和非可变参数函数具有相同的签名,哪个将运行?

转载 作者:行者123 更新时间:2023-12-01 08:14:57 25 4
gpt4 key购买 nike

我刚刚测试了以下场景,两个函数:

// method A
private void make(Object ...objects ){
System.out.println("varargs make");
}

// method B
private void make(){
System.out.println("non varargs make");
}

通过调用make()

如果代码中只存在这两种方法之一,那么它就是被调用的方法。但是,当两种方法都存在时,则仅调用方法 B。

我还有两个理论问题和一个实践问题..

1) 是什么让编译器“偏爱” B 而不是 A ?

2)这是有意的(标准)还是编译器执行的结果?

3)有没有办法“强制”编译器调用方法A?

最佳答案

1) What makes the compiler "favor" B to A ?

JLS 规范。它倾向于最具体的匹配(并且有关于其含义的规则)

2) Is this intentional (standard) or a result of the implementation of the compiler ?

按设计。

3) Is there a way to "force" the compiler to call method A ?

给出一个对象数组,可以是空数组,也可以是其他数组。

make(new Object[0]);

关于java - 可变参数函数参数和非可变参数函数具有相同的签名,哪个将运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259942/

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