She*_*oss 4 java collections extends parameterized
我一直试图扩展ArrayList类没有太大的成功.我想扩展它,并能够参数化它.
通常你有类似的东西
ArrayList<SomeObject> list = new ArrayList<SomeObject>();
Run Code Online (Sandbox Code Playgroud)
我想要
MyList<SomeObject> list = new MyList<SomeObject>();
Run Code Online (Sandbox Code Playgroud)
简单地扩展ArrayList不起作用.
public class MyList extends ArrayList ...
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它时,我得到了错误
MyList类型不是通用的; 它不能使用参数<SomeObject>进行参数化
我尝试过变种
public class MyList extends ArrayList<Object>
public class MyList<SubObject> extends ArrayList<Object>
Run Code Online (Sandbox Code Playgroud)
没有成功,如果我使用类名后面的子对象它似乎工作,但由于某种原因隐藏子对象类中的方法.
任何有关如何使这项工作正常的想法或建议都值得赞赏.
Ada*_*icz 12
您需要为ArrayList's type参数指定一个类型.对于泛型类型参数,这T是相当常见的.由于编译器不知道是什么T,因此需要添加一个类型参数,MyList以便传入类型.因此,您得到:
public class MyList<T> extends ArrayList<T>
Run Code Online (Sandbox Code Playgroud)
此外,您可能需要考虑实现List和委派给ArrayList,而不是继承自ArrayList."赞成对象组合而不是类继承.[ Design Patterns pg.20]"
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |