使用Java中的抽象类扩展抽象泛型类

时间:2013-12-03 17:24:44

标签: java generics

我有一个基础抽象类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}},即使我实际上并不关心它是什么类型。有更好的方法吗?

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()