在Java中扩展T和SomeInterface <t> </t>

时间:2010-03-30 07:46:11

标签: java generics multiple-inheritance extends

我想创建一个带两个参数的类。一个应该简单地输入为T.另一个应该被输入为扩展T和SomeInterface<T>的东西。当我用

尝试这个时
public class SomeClass<T, S extends SomeInterface<T> & T>

然后Java抱怨

“类型T不是接口;不能将其指定为有界参数”

如果我改为尝试使用

为S创建一个接口
public interface TandSomeInterface<T> extends SomeInterface<T>, T

然后Java抱怨

“不能将类型参数T称为超类型”

有没有办法在Java中这样做?我想你可以用C ++做到这一点......?

2 个答案:

答案 0 :(得分:3)

您无法创建扩展类型参数T的接口,因为没有合同可以保证T成为接口。当然,不允许扩展类的接口。

答案 1 :(得分:3)

如果扩展接口也可以这样做:

public class SomeClass<T extends I, S extends SomeInterface<T> & I>

但也许这不是你想要的......