Java varargs实现中似乎存在一个错误。当方法使用不同类型的vararg参数重载时,Java无法区分适当的类型。
它给我一个错误 The method ... is ambiguous for the type ...
考虑以下代码:
public class Test
{
public static void main(String[] args) throws Throwable
{
doit(new int[]{1, 2}); // <- no problem
doit(new double[]{1.2, 2.2}); // <- no problem
doit(1.2f, 2.2f); // <- no problem
doit(1.2d, 2.2d); // <- no problem
doit(1, 2); // <- The method doit(double[]) is ambiguous for the type Test
}
public static void doit(double... ds)
{
System.out.println("doubles");
}
public static void doit(int... is)
{
System.out.println("ints");
}
}
该文件说:“一般来说,你不应该重载可变参数的方法,或将难以程序员找出哪些超载被调用。”
但是,他们没有提到此错误,发现困难的不是程序员,而是编译器。
有什么想法吗?
吃鸡游戏
30秒到达战场
相关分类