【发布时间】:2011-08-07 02:46:38
【问题描述】:
以下代码(在 android 中运行)总是在第 3 行给我一个 ClassCastException:
final String[] v1 = i18nCategory.translation.get(id);
final ArrayList<String> v2 = new ArrayList<String>(Arrays.asList(v1));
String[] v3 = (String[])v2.toArray();
当 v2 是 Object[0] 以及其中有字符串时也会发生这种情况。 知道为什么吗?
【问题讨论】:
-
您可能想了解协变和逆变 -- en.wikipedia.org/wiki/…
-
如果 T 是一个带有工厂方法进行实例化的接口的情况呢?
-
@LaceCard - 这只是与协变/逆变非常间接相关。真正的问题是,这是
toArray()方法的指定行为的直接结果。
标签: java list classcastexception toarray