是否可以使用泛型但需要特定的父类型?

时间:2013-05-20 16:50:37

标签: java

我想创建一个班级MyMap<T>,其中T 必须派生自MyAbstractClass
然后MyMap将创建和管理它是什么类型的数组。 MyMap.getPos(0,0)应该返回T类型的对象,而不是MyAbstractClass

我该怎么做?

4 个答案:

答案 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>