作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个抽象类定义为:
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)
想想你将如何使用这个类型变量。在定义类时声明它的方式是将它放在new BaseClass< /* type parameters - here */> { ... }
中。 .
另请注意,根据 JLS ,类型参数在类定义中的一个地方声明:
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(); }
}
关于java - 嵌套泛型类型参数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41746310/
我是一名优秀的程序员,十分优秀!