gpt4 book ai didi

java - 我们可以将包含父类(super class)对象的 vector 转换为包含子类对象的 vector 吗?

转载 作者:行者123 更新时间:2023-12-01 22:28:19 24 4
gpt4 key购买 nike

我有两个这样的 vector :

Vector<Animal> vAM = new Vector<Animal>();
Vector<Cat> vCat = new Vector<Cat>();

是否可以将 vAM vector 转换为 vCat vector ?如果不是,那么应该怎么做?

更新:我提到这一点的原因是我的代码中有一定的转换,它不会抛出编译时异常,但会抛出运行时异常。因此我想知道是否还有其他方法可以做到这一点。

最佳答案

您想到的强制转换只是一个编译时工件:您希望编译器重新解释静态类型 Vector<Animal> 的表达式作为 Vector<Cat> 类型的表达式。这种重新解释违反了静态类型安全,这就是它导致编译器错误的原因。

如果您确实需要这样做,例如由于您正在使用的第 3 方 API 中存在一些不匹配,则有一种方法可以绕过编译器检查,但您仍然需要 @SuppressWarnings :

vCat = (Vector<Cat>)(Vector)vAM;

请注意,这样做您将失去编译器对 vAM 的保证。实际上只包含猫。

关于java - 我们可以将包含父类(super class)对象的 vector 转换为包含子类对象的 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297029/

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