我有一个基础抽象类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>
,但这看起来很丑陋,现在我必须在任何地方添加一个类型,我将变量声明为{{ 1}},即使我实际上并不关心它是什么类型。有更好的方法吗?
答案 0 :(得分:5)
如果您想在 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()
。