我有一个基本抽象类public abstract class BaseModel <T extends BaseModel<T>>
。通常,我用 public class OtherModel extends BaseModel<OtherModel>
之类的东西扩展这个类。 。对于我的一些类,我想要一个中间抽象类,这样 A 扩展 B 扩展 BaseModel。
我希望能够声明public class EndModel extends MiddleModel<EndModel>
。我设法让 Eclipse 满意的唯一方法是声明 MiddleModel
如public abstract class MiddleModel<T extends BaseModel<T>> extends BaseModel<T>
,但这看起来很难看,现在我必须在将变量声明为 MiddleModel
的任何地方添加一个类型。 ,即使我实际上并不关心它是什么类型。有更好的方法吗?
最佳答案
如果您想在 MiddleModel 中添加更多功能(这取决于它的泛型类型),请像这样声明它:
public abstract class BaseModel <T extends BaseModel<T>> {}
public abstract class MiddleModel <T extends MiddleModel<T>> extends BaseModel<T> {}
public class EndModel extends MiddleModel<EndModel> {}
请注意,EndModel 不支持该扩展性。这是一个权衡,因为我不想写 new EndModel<EndModel>()
而是new EndModel()
.
关于java - Java中用抽象类扩展抽象泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357697/