gpt4 book ai didi

java - 为什么class cast在java三元运算符中不生效

转载 作者:行者123 更新时间:2023-11-30 07:52:05 24 4
gpt4 key购买 nike

我有两种方法:

public static void in(Object...objects) {
System.out.println(objects);
}
public static void in(Collection<?> c){
System.out.println(c);
}

然后我调用这两个方法

Object obj = Arrays.asList(1, 2, 3);
in(obj); // [Ljava.lang.Object;@5b480cf9

in((List) obj); // [1, 2, 3]

到目前为止我没有遇到任何问题,但我不明白这段代码的输出:

in(obj instanceof List ? (List) obj : obj); // [Ljava.lang.Object;@6f496d9f

为什么会这样?我认为它应该等同于 in((List)obj)

最佳答案

一个表达式只有一种编译时类型。表达式 obj instanceof List ? (List) obj : obj 不可能是 List 类型,因为如果 obj 不是 List,它的值就是 obj。所以它的类型是Object。

为了更清楚(希望如此),你不可能这样做

List list = obj instanceof List ? (List) obj : obj;

它会尝试将三元表达式求值的结果(可能是 obj,类型为 Object)分配给一个列表。

关于java - 为什么class cast在java三元运算符中不生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264885/

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