Java 错误:方法myMethod(int[])对于类型ArityMethod是不明确的
运行此代码时出错的原因是什么, 运行Java 错误:方法myMethod(int[])对于类型ArityMethod是不明确的,java,ellipsis,Java,Ellipsis,运行此代码时出错的原因是什么, 运行myMethod() 看起来很明显,不是吗myMethod()可以引用myMethod(int…arg),可以通过传递new int[0]来实现,也可以通过传递new String[0]来引用myMethod(String..arg)变量。两者都是同样有效的,所以java不知道调用哪一个,因此拒绝编译您的代码 您有两个和三个解决方案: 只需使用显式数组调用正确的方法:myMethod(newint[0])调用m1;myMethod(newstring[0])调
myMethod()
看起来很明显,不是吗
myMethod()
可以引用myMethod(int…arg)
,可以通过传递new int[0]
来实现,也可以通过传递new String[0]
来引用myMethod(String..arg)
变量。两者都是同样有效的,所以java不知道调用哪一个,因此拒绝编译您的代码
您有两个和三个解决方案:
myMethod(newint[0])
调用m1;myMethod(newstring[0])
调用m2
myMethod
名称以消除歧义,或者,确保这种重叠不会发生,例如通过使用void myMethod(int…arg){}
以及void myMethod(String a,String…rest){}
,从而确保myMethod()
只能引用int…
变量
void myMethod(){…}
,如果您尝试调用myMethod()
,此版本将优先于其他两个版本
编辑:根据@Stephen C的评论添加了选项#3。在我看来,调用myMethod()可以引用myMethod(int…args)或myMethod(String…args)中的任何一个,在这种情况下,两者具有相同的优先级。这就是为什么会出现这个错误 有关var args和重载的详细说明,请参阅。这将有助于更好地理解var参数
希望一切都会好起来 好的。答案已编辑。这是一个相当详细的解释。然而,我认为OP只是在寻找错误的来源,所以前两行应该已经足够好了。干杯
public class ArityMethod {
public static void myMethod(int... arg){
System.out.print("\nmyMethod1 : ");
for (int i : arg) {
System.out.print(i+", ");
}
}
public static void myMethod(String... arg){
System.out.print("\nmyMethod2 : ");
for (String str : arg) {
System.out.print(str +" ");
}
}
public static void myMethod1(int a, float b, Object... arg){
System.out.print("\nmyMethod3 a value : "+a);
System.out.print("\nmyMethod3 b value : "+b);
System.out.print("\nmyMethod3 : ");
for (Object str : arg) {
System.out.print(str.toString() +" ");
}
}
public static void main(String[] args) {
myMethod(1,2,3,4,5);
myMethod("hello", "welcome", "to", "Java Discover");
myMethod1(100,3.0f, "hello", "welcome", "to", "Java Discover");
myMethod();
}
}