嵌套泛型类型参数参数
Nested Generic Type Parameters Parameters
我有一个摘要 class 定义为:
public abstract class BaseClass<T extends FirstClass, U extends BaseAnother<? extends SecondClass>> {
我不想使用问号 (?
) 并使用一些通用变量,例如 T
或 U
。
我该怎么做?
是
public abstract class BaseClass<X extends SecondClass, T extends FirstClass, U extends BaseAnother<X>> {
,没有?
(我添加了 X extends SecondClass)
想想你将如何使用这个类型变量。在定义 class 时声明它的方式是在 new BaseClass< /* type parameters - here */> { ... }
.
路径中声明它
另请注意,根据 JLS,类型参数在 class 定义中的一处声明:
NormalClassDeclaration:
ClassModifiersopt class Identifier 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(); }
}
我有一个摘要 class 定义为:
public abstract class BaseClass<T extends FirstClass, U extends BaseAnother<? extends SecondClass>> {
我不想使用问号 (?
) 并使用一些通用变量,例如 T
或 U
。
我该怎么做?
是
public abstract class BaseClass<X extends SecondClass, T extends FirstClass, U extends BaseAnother<X>> {
,没有?
(我添加了 X extends SecondClass)
想想你将如何使用这个类型变量。在定义 class 时声明它的方式是在 new BaseClass< /* type parameters - here */> { ... }
.
另请注意,根据 JLS,类型参数在 class 定义中的一处声明:
NormalClassDeclaration: ClassModifiersopt class Identifier 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(); }
}