先说一下我的情况:
我在第三方 SDK 中有一个具有泛型类型的基类:
public abstract class BaseClass<T extends BaseDataType> {
public abstract class BaseDataType {xxx}
public abstract int getCount();
public abstract someMethod(T t);
}
在我的业务环境中,它扩展了BaseClass
,如下所示:
public abstract class MyGeneralBaseClas<`how to write this???`> extends BaseClass {
@Override public int getCount() {return some_list.size()};
@Override public abstract someMethod(`how to write this???`);
}
在实际业务中,我编写我的类:
public class MyClass extends MyGeneralBaseClass<MyDataType> {
@Override public someMethod(MyDataType type) {xxx}
}
public class MyDataType extends BaseClass.BaseDataType {
xxx
}
但是代码无法编译。抱歉,我正在出差,没有 IDE 和开发工具,所以无法粘贴错误。但我认为如果你在 IntelliJ Idea 这样的 IDE 中写下这段代码,它会给出我遇到的错误。
那么这个案例怎么写:泛型类型的继承,以及使用泛型类型的类的继承。
我想要的是,在MyClass
中使用具体类MyDataType
而不是抽象BaseDataType
。
最佳答案
看来MyGeneralBaseClas
应该有一个与BaseClass
具有相同类型绑定(bind)的泛型类型参数:
public abstract class MyGeneralBaseClas<T extends BaseDataType> extends BaseClass<T> {
@Override public int getCount() {return some_list.size()};
@Override public abstract someMethod(T t);
}
关于JAVA:泛型类型类继承和泛型类型继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213546/