嵌套通用类型参数参数

时间:2017-01-19 16:00:17

标签: java generics type-parameter

我有一个抽象类,定义为:

public abstract class BaseClass<T extends FirstClass, U extends BaseAnother<? extends SecondClass>> {

我不想使用问号(?)并使用一些通用变量,如TU

我该怎么做?

1 个答案:

答案 0 :(得分:0)

是的 public abstract class BaseClass<X extends SecondClass, T extends FirstClass, U extends BaseAnother<X>> {,不是吗?

(我添加了 X扩展了SecondClass

考虑如何使用此类型变量。在定义类时声明它的方法是在new BaseClass< /* type parameters - here */> { ... }中将其路径化。

另请注意,根据JLS,类型参数在类定义中声明在一个地方:

  

NormalClassDeclaration:       ClassModifiersopt类标识符TypeParametersopt                                                  Superopt Interfacesopt ClassBody

请参阅下面的示例 8.1.2。通用类和类型参数章节:

interface ConvertibleTo<T> {
    T convert();
}
class ReprChange<T extends ConvertibleTo<S>,
                 S extends ConvertibleTo<T>> { 
    T t; 
    void set(S s) { t = s.convert();    } 
    S get()       { return t.convert(); } 
}