gpt4 book ai didi

java - 如何参数化扩展集合

转载 作者:搜寻专家 更新时间:2023-11-01 01:07:23 25 4
gpt4 key购买 nike

我一直在尝试扩展 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/

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