gpt4 book ai didi

可变参数和装箱的 Java 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:42:23 27 4
gpt4 key购买 nike

我有一个与以下代码片段相关的问题:

    class VarArgsTricky {
static void wide_vararg(long... x) {
System.out.println("long...");
}

static void wide_vararg(Integer... x) {
System.out.println("Integer...");
}

public static void main(String[] args) {
int i = 5;
wide_vararg(i, i, i); // needs to widen and use var-args
Long l = 9000000000l;
wide_vararg(l, l); // prints sucessfully "long..."
}
}

第一次调用 wide_vararg 编译失败(说方法不明确),而第二次编译正常。

关于此行为的任何解释?谢谢!

最佳答案

第一个 wide_vararg 调用是不明确的,因为编译器可以要么:

  • int 扩展为 long,并调用第一个 wide_vararg 方法,
  • int 自动装箱为 Integer,并调用第二个 wide_vararg

但是,它不知道应该 做什么,因此它拒绝编译不明确的方法调用。如果您希望第一次调用编译,请将 i 声明为 Integerlong,而不是 int

关于可变参数和装箱的 Java 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com