java - 只允许 ArrayList 中的特定类型

标签 java generics arraylist

有没有办法将 ArrayList 类子类化为只允许特定类(或其子类)的对象。
具体来说,我有一个名为 RecordStatus 的基类,我需要使用基于该类的对象创建 ArrayList。
我知道基于 ArrayList<RecordStatus> 创建一个类很容易但是,每次我从数组中检索一个元素时,我都需要将它转换为原始类。
有更简单的方法吗?

最佳答案

Is there a way to subclass the ArrayList class to only allow objects of a specific class (or subclass thereof). Specifically, I have a base class called RecordStatus and I need to create ArrayLists with objects based on this class.

这正是 Java 中的通用构造允许您执行的操作。请注意,您不必强制转换来自 ArrayList<RecordStatus> 的实例。只要RecordStatus的所有子类具有相同的 API。如果子类具有不同的方法/字段,您只需要这样做。例如,如果 RecordStatus有一个方法 setStatus ,子类也是如此,不需要强制转换,因为 Java 多态性的动态分派(dispatch)将根据在运行时调用方法的实例类型确保实现的方法是正确的。

关于java - 只允许 ArrayList 中的特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7704617/

相关文章:

java - 具有相同删除的两种方法不一定是等效的(或者它们之间的签名不是子签名)?

java - 如何按字母顺序对 Arraylist 进行排序? ( java )

java - Android Search ArrayList of objects for only a parameter,返回对象索引

java - 如何在数组列表中查找数组列表的索引?

java - Spring启动性能问题

c# - 如果我想将类型约束 (T=int) 方法添加到泛型 (T) 类中,是否必须创建扩展方法?

java - 从一个 JVM 读取另一个 JVM 的输入流

java - 将方法声明为 `return this` 有什么好方法吗?

java - 命令行参数没有值(value),但代码给出了输出?

java - 在后台线程中运行处理程序消息