gpt4 book ai didi

Java 泛型 : Why does an explicit cast cause a compiler error, 但变量赋值没有

转载 作者:行者123 更新时间:2023-11-29 06:15:03 25 4
gpt4 key购买 nike

这个 block 编译正确:

ArrayList<Baz> list = savedInstanceState.getParcelableArrayList("foo");
bar(list);

但是这个 block 错误指出 ArrayList<Parcelable>无法转换为 ArrayList<Baz> :

bar((ArrayList<Baz>)savedInstanceState.getParcelableArrayList("foo"))

其中 bar 的形式为:

private void bar(ArrayList<Baz> food) {
}

Baz是一个实现 Parcelable 的类界面

有没有一种方法可以完成直接转换,而不必执行隐式转换并创建不必要的变量?

最佳答案

为了使用引用方法bar(ArrayList<T> food) ,您必须执行通用类型调用,它会替换 T具有一定的具体值(value)。 T必须绑定(bind)到其他类型,引入通配符,如 bar(ArrayList<?> food) .

关于Java 泛型 : Why does an explicit cast cause a compiler error, 但变量赋值没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5413565/

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