java - 如何参数化扩展集合

标签 java collections parameterized extends

我一直在尝试扩展 ArrayList 类,但没有成功。我想扩展它,并能够对其进行参数化。

所以通常你有类似的东西

ArrayList<SomeObject> list = new ArrayList<SomeObject>();

我要

MyList<SomeObject> list = new MyList<SomeObject>();

简单地扩展 ArrayList 是行不通的。

public class MyList extends ArrayList ...

当我尝试使用它时出现错误

The type MyList is not generic; it cannot be parameterized with arguments <SomeObject>

我已经尝试过

public class MyList extends ArrayList<Object>
public class MyList<SubObject> extends ArrayList<Object>

没有成功,如果我在类名后面使用子对象,它似乎可以工作,但由于某种原因隐藏了子对象类中的方法。

如有任何想法或建议,我们将不胜感激。

最佳答案

您需要为ArrayList 的类型参数指定一个类型。对于泛型类型参数,T 是相当常见的。由于编译器不知道 T 是什么,因此您需要向 MyList 添加一个类型参数,该参数可以传入类型。因此,您得到:

public class MyList<T> extends ArrayList<T>

此外,您可能需要考虑实现 List 并委托(delegate)给 ArrayList,而不是从 ArrayList 继承。 “优先考虑对象组合而不是类继承。[设计模式 第 20 页]”

关于java - 如何参数化扩展集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675430/

相关文章:

java - SonarQube Java Analyser,规则 S2183,我为什么要删除这个无用的移位?

java - Android Java 中的 BBCODE 到 HTML

类型为 T 的 Java 参数化 JUnit

php - PDO 和 Microsoft SQL : Must declare the table variable "@P1"

java - getRequests() 必须返回一个可迭代的数组

java - 调号在 Python 中有效,但在 Java 中不行吗?

java - 用java连接微软Exchange服务器

java - 执行最快的搜索 - 我应该使用哪个集合?

具有 set() 方法和 O(1) Contains() 的 Java 数据结构

java - 如何更新 map 中的值,保持顺序