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

kar*_*arl 2 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变得快乐的唯一方法是,如果我声明MiddleModelpublic abstract class MiddleModel<T extends BaseModel<T>> extends BaseModel<T>,但这看起来很难看,现在我必须在我声明变量的地方添加一个类型MiddleModel,即使我实际上并不关心它是什么类型的是.有一个更好的方法吗?

Chr*_*fer 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> {}
Run Code Online (Sandbox Code Playgroud)

请注意,EndModel不支持该可扩展性.这是一种权衡,因为我不想写new EndModel<EndModel>(),而是new EndModel().