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