我想创建一个班级MyMap<T>
,其中T
必须派生自MyAbstractClass
。
然后MyMap
将创建和管理它是什么类型的数组。 MyMap.getPos(0,0)
应该返回T
类型的对象,而不是MyAbstractClass
。
我该怎么做?
答案 0 :(得分:10)
MyMap<T extends MyAbstractClass>
它将强制泛型类型扩展MyAbstractClass
,但除此之外它将完全像您刚刚提供T
作为类一样工作。具体来说,您的函数将返回T
。
答案 1 :(得分:5)
像这样使用extends
:
MyMap<T extends MyAbstractClass>
答案 2 :(得分:4)
将限制放在T
MyMap<T extends MyAbstractClass> {
....
}
要创建阵列,您有两个选择。一种是在方法中创建MyAbstractClass[]
并转换为T
。另一种方法是在构造函数中使用Class<T>
并使用Array.newInstance(class, size)
。
答案 3 :(得分:3)
您可以使用
MyMap<T extends MyAbstractClass>