【发布时间】:2014-03-18 05:41:35
【问题描述】:
这只是一个练习,但我无法弄清楚其中的歧义:
private static void flipFlop(String str, int i, Integer iRef) {
System.out.println(str + "ciao");
}
private static void flipFlop(String str, int i, int j) {
System.out.println(str + "hello");
}
public static void main(String[] args) {
flipFlop("hello", new Integer(4), 2004);
}
上面写着:
方法 flipFlop(String, int, Integer) 对于类型不明确 测试
我猜想第二个参数会被解包为 int,所以第二个 flipFlop 方法会是选择。
【问题讨论】:
-
最后一个参数可以装箱到
Integer或作为原语应用 -
@Kayaman:链接它。我们都知道它可能在 JLS 的某个地方,只是说它在那里并没有增加任何价值。
-
作为记录,它可以使用 Java 8 编译并打印“hellohello”。
-
@assylias 如果您能在此处找到并添加明确的 Java 8 JLS 参考,那就太好了。
-
@MiserableVariable:这也是我的假设,是的。他们可能将其添加到第 2 阶段(如我的回答中所述)。