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

标签 java vector

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

相关文章:

java - Android Studio 中的 Firestore 引用

java-读写波斯字符串或其他语言而不是英语到文本文件

java - 如何更改此代码以更新当前用户而不是创建新用户?

C# 等效于 C++ vector ,具有连续内存?

C++如何理解(auto & n : v)?

java - C++ vector 、java 数组等效吗?

java - Spring MVC @ModelAttribute 不适用于用户定义的依赖项

java - 打印方阵并使用 Java 对其进行转置

c++ - 我可以使用插入函数将值插入指针 vector 吗?

c++ - "Cannot allocate an object of abstract type"错误