【问题标题】:Extend abstract generic class with abstract class in Java用Java中的抽象类扩展抽象泛型类
【发布时间】:2013-12-03 17:24:44
【问题描述】:

我有一个基本抽象类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 是通用的,那么它需要是通用的。如果您不在乎类型是什么,您可以将其声明为MiddleModel<?>
  • 这就是我迄今为止一直在做的事情。我希望能够在EndModel 中声明类型,而不必担心MiddleModel 中的类型
  • @BoristheSpider 如果你把它扔进答案,我会把它标记为正确的。

标签: java generics


【解决方案1】:

如果您想在 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&lt;EndModel&gt;(),而是写new EndModel()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    相关资源
    最近更新 更多