我有两个这样的 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/