为什么 f(Double x) 比 f(double... x) 更好? [复制]

2024-01-24

今天我正在准备即将到来的 Java 考试,我遇到了这个问题:

Let 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 https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.2:

  1. 类型加宽
  2. 自动装箱
  3. 可变参数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 f(Double x) 比 f(double... x) 更好? [复制] 的相关文章

随机推荐