为什么';javac编译器是否会在代码中标记一个关于varargs歧义的警告?

为什么';javac编译器是否会在代码中标记一个关于varargs歧义的警告?,java,variadic-functions,Java,Variadic Functions,以下两行代码编译正常。然而,我认为它是不可用的,因为我想不出任何方法调用可以使用它 // If I can't use this code, why not warn me about it? void method(int... x) { } void method(int x, int... y) { } 例如,以下两行代码都会导致javac编译器发出关于varargs歧义的错误消息 // Both invocations fail to compile. method(1); metho

以下两行代码编译正常。然而,我认为它是不可用的,因为我想不出任何方法调用可以使用它

// If I can't use this code, why not warn me about it?
void method(int... x) { }
void method(int x, int... y) { }
例如,以下两行代码都会导致javac编译器发出关于varargs歧义的错误消息

// Both invocations fail to compile.
method(1);
method(1,1);  
我想知道javac编译器是否在默认情况下禁用了警告消息,因此我尝试使用javac-Xlint选项编译代码,但这并没有改变什么。感谢您的评论。谢谢。

试试这个:
int[]blam={1};方法(BUM);方法(1,BARM)


换句话说,您仍然可以通过在声明vararg的位置使用
int[]
类型的值来调用所需的方法。

尝试以下操作:int[]blam={1};方法(BUM);方法(1,BARM)@DwB,非常有趣,谢谢。我不确定你想要什么答案,除了“因为它没有这个检查。”方法定义并不含糊。方法调用是不明确的。也可以尝试这样做:方法(1,null);