gpt4 book ai didi

java - 为什么以下强制转换会导致编译错误?

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:25 25 4
gpt4 key购买 nike

我有以下代码:

public static<F, S> void xyz() {
class Pair<X, Y> {}
class Role<F> {}

Map<?, List<Pair<?, ?>>> map = null;
Role<F> role = null;

List<Pair<F, S>> result = (List<Pair<F, S>>) map.get(role);
}

不幸的是,Java 提示最后一行的强制转换。为什么会出现这种情况?

在我看来,这是违反直觉的。在每个可能存在正确类型对应的地方都应该允许强制转换。

最佳答案

Actor 阵容没有任何意义。这并不是扩大 Actor 阵容的相反。

类似的可能的转换,其中我们有一个通配符参数:

List<String> ls;
List<?> cast = ls;

在这种情况下,我随后无法将 Integer 添加到 ls/cast 对象。

cast.add(Integer.valueOf(0)); // Not going to work.

如果泛型参数本身是带有通配符的泛型,情况就非常不同。

List<List<String>> strses;
List<List<?>> cast = strses; // Suppose this actually worked.
List<Integer> ints;
List<?> wildInts = ints;
cast.add(0, wildInts); // Good.
List<String> wasInts = strses.get(0); // Oops!!

关于java - 为什么以下强制转换会导致编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272524/

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