我有一个基本的抽象类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/

10-10 17:29