【发布时间】:2013-11-28 05:25:27
【问题描述】:
假设我正在定义一个类 User,它有一个扩展 Principal 的泛型类型
public abstract class User<P extends Principal> {
}
我有一个动作基类,应该用用户参数化:
public abstract class Action<U extends User<Principal>> {
}
这两个类在 muy 代码库中。现在,我想在特定的应用程序上使用它们,所以我为 Principal 和 User 创建了一个实现:
public class MyPrincipal implements Principal {
public String getName() {
return "Administrator";
}
}
public class MyUser extends User<MyPrincipal>{
}
拥有用户后,我想在操作中使用它
public class MyAction extends Action<MyUser>{
}
最后一个类不能编译。它抱怨说:
Bound mismatch: The type MyUser is not a valid substitute for the bounded parameter <U extends User<Principal>> of the type Action<U>
我想要强制所有扩展 MyAction 的类都应该使用扩展 User 的对象进行参数化,并且还应该使用实现 Principal 的对象进行参数化。我错过了什么?
【问题讨论】: