今天我正在攻读Java考试,我遇到了这个问题:
让我们
A
来一类定义如下:class A { public void f(Double x) { System.out.println("A.f(Double)"); } public void f(double... x) { System.out.println("A.f(double...)"); } }指令产生的输出是什么
A a = new A(); a.f(1.0);
?
答案似乎是,A.f(Double)
但我不明白为什么.有人可以给我一个正确的解释吗?
重载决策总是倾向于在具有可变参数列表的函数上具有显式数量的参数的函数,即使这意味着它1.0
是自动装箱的.
更详细一点,根据JLS 15.12.2选择具有此优先级的函数:
类型加宽
自动装箱
变量参数