当前位置: 首页 > 面试题库 >

为什么f(Double x)比f(double…x)更好的匹配?

魏臻
2023-03-14
问题内容

今天,我正在为即将参加的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
选择具有此优先级的函数:

  1. 类型加宽
  2. 自动装箱
  3. 可变参数


 类似资料:
  • 本文向大家介绍F# 匹配选项,包括了F# 匹配选项的使用技巧和注意事项,需要的朋友参考一下 示例 模式匹配对于处理选项很有用:            

  • 本文向大家介绍F# 你好,世界!,包括了F# 你好,世界!的使用技巧和注意事项,需要的朋友参考一下 示例 这是一个简单的控制台项目的代码,该项目显示“ Hello,World!”。到STDOUT,然后退出代码为0 逐行细分示例: [<EntryPoint>] -.net属性,用于标记程序(源)的“用于设置入口点的方法”。 let main argv-这定义了main一个由单个参数调用的函数argv

  • 问题内容: 我正在阅读一个python脚本,该脚本接受XML文件的输入并输出XML文件。但是,我不了解打印语法。可有人请解释什么的呢? 问题答案: 该方法格式化字符串字面量 和它的新功能。 甲 格式的字符串文字 或 F-串 是前缀字符串文字或。这些字符串可能包含替换字段,这些替换字段由花括号分隔。尽管其他字符串文字始终具有恒定值,但是格式化的字符串实际上是在运行时评估的表达式。 格式化字符串文字的

  • 可能重复: 如何比较Java中的字符串? 我不明白为什么声明的变量是不一样的。 ex代码: 现在这产生了一个布尔值,我以为它是真的,但它不是,它是假的,我不明白为什么。 有人能解释一下吗?

  • 问题内容: 我试图理解 为什么Java的ArrayDeque比Java的LinkedList更好, 因为它们都实现了Deque接口。 我几乎看不到有人在他们的代码中使用ArrayDeque。如果有人对ArrayDeque的实现方式有了更多的了解,那将是有帮助的。 如果我理解它,我会更自信地使用它。对于JDK实现管理头和尾引用的方式,我不清楚。 问题答案: 链接结构可能是最糟糕的结构,要在每个元素上

  • 问题内容: 我目前正在开始新的应用开发。应用程序设计师坚持认为我们使用 JBoss5 是因为它“更好”。是否有人对“更好”有更广泛的定义(如果如此)? 我有在具有大量用户负载的大规模应用程序中使用 Tomcat5 和6的经验,并且它处理得很好(IMHO)。两者都将在相同的硬件条件下(如果实现很重要)在 RedHat6 上运行。 提前致谢 问题答案: 说任何工具或框架都只是“更好”是可笑的。它总是取