gpt4 book ai didi

java - 为什么编译器尝试使用 Wide and Box 为什么不使用 Box and Wide?

转载 作者:行者123 更新时间:2023-12-04 21:00:50 26 4
gpt4 key购买 nike

当调用特定方法时,我读到 Wide 和 Box 是首选,为什么不是 Box 和 Wide。谁能用一个小例子向我解释原因。

最佳答案

加宽:使用更窄的参数类型调用方法。

public class Test {
static void doIt(long l) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // OK: int i is widened to long
}
}

装箱:调用一个带有原始参数的包装器类型的方法。

public class Test {
static void doIt(Integer i) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // OK: int i is boxed to Integer
}
}

加宽然后装箱:不起作用。

public class Test {
static void doIt(Long l) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // FAILS. Cannot widen int to long and then box to Long
}
}

装箱然后扩大:只有扩大到父类(super class)型时才有效。

public class Test {
static void doIt(Number n) { }
static void go(Long l) { }
public static void main(String[] args) {
int i = 1;
doIt(i); // OK. i is boxed to Integer, and Number is a supertype of Integer
go(i); // FAILS: Long is not a supertype of Integer
}
}

关于java - 为什么编译器尝试使用 Wide and Box 为什么不使用 Box and Wide?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133699/

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