gpt4 book ai didi

java - 为什么将 Type[] 转换为 Class[] 会抛出 ClassCastException?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:56:59 26 4
gpt4 key购买 nike

今天我在写一些大量使用反射的代码,我遇到了这种我无法解释的行为:为什么

Type[] types = ((ParameterizedType)m.getGenericReturnType()).getActualTypeArguments();
Class[] c = (Class[])types;

在遍历同一数组并强制转换每个元素时抛出 ClassCastException,即

for(Type t : types) {
Class c = (Class)t;
}

成功了吗?

我的意思是,如果可以将单个元素转换为另一个类,为什么不能在相同类型的数组之间进行转换呢?

可能是有原因的,但我似乎找不到原因...

最佳答案

你不能投 Type[]Class[]因为 Type[]不是 Class[] .这可能听起来微不足道,但仅此而已。

如果你能投出 Type[]Class[] ,当其中一个元素是 Type 时,您会期望发生什么?那不是 Class (例如 ParameterizedType)?

关于java - 为什么将 Type[] 转换为 Class[] 会抛出 ClassCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3675468/

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