8

我想创建一个带有两个参数的类。一个应该简单地键入为 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++ 中做到这一点......?

4

2 回答 2

3

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

于 2010-03-30T08:28:31.370 回答
3

如果您也扩展接口,这也有效:

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

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

于 2010-03-30T08:57:39.673 回答