JAVA:泛型类继承和泛型类型继承
让我先说明我的情况:JAVA:泛型类继承和泛型类型继承
我已经在第三方SDK,与通用型基类:
public abstract class BaseClass<T extends BaseDataType> {
public abstract class BaseDataType {xxx}
public abstract int getCount();
public abstract someMethod(T t);
}
在我商业环境,它延伸BaseClass
如下:
,我写我的课:
public class MyClass extends MyGeneralBaseClass<MyDataType> {
@Override public someMethod(MyDataType type) {xxx}
}
public class MyDataType extends BaseClass.BaseDataType {
xxx
}
但代码无法编译。对不起,我旅行,我没有我的IDE和开发工具,所以我不能粘贴错误。但我认为如果你在一个IDE这样的IntelliJ Idea中写下来,它会给我遇到的错误。
那么如何编写这种情况:继承泛型类型,并继承使用泛型类的类。
我想要的是,MyClass
使用具体类MyDataType
而不是摘要BaseDataType
。
看来MyGeneralBaseClas
应该有一个泛型类型参数与同类型绑定为BaseClass
:
public abstract class MyGeneralBaseClas<T extends BaseDataType> extends BaseClass<T> {
@Override public int getCount() {return some_list.size()};
@Override public abstract someMethod(T t);
}
你可以做到这一点有两种方式:
-
通过使用
BaseDataType
类按原样例如:abstract class MyGeneralBaseClas<T extends BaseDataType> extends BaseClass<T> { @Override public void someMethod(T t){} }
-
通过扩展
BaseDataType
类,例如:class DerivedDataType extends BaseDataType{ //Some code } abstract class MyAnotherBAseClass<DerivedDataType> extends BaseClass{ @Override public void someMethod(com.gamesys.application.BaseDataType t) {} }
当我扩展'BaseDataType',这意味着我在商业环境,所以我必须定义一个具体的类而不是抽象的。 –
我已经得到了答案。无论如何。 –
这正是我想要的。你会请我帮忙详细解释一下吗?或者提供一些易于理解的文章网址。很多thx –
@McArthorLee基于'class MyClass extends MyGeneralBaseClass'我想你'MyGeneralBaseClas'有一个扩展'BaseDataType'的泛型类型参数。因此'MyGeneralBaseClas '。现在,由于'BaseClass'还需要一个扩展'BaseDataType'的类型参数,因此可以将'T'传递给它,从而为您提供'class MyGeneralBaseClas extends BaseClass ' –
Eran
yes,you are right。但你的解释是关于我的商业环境。你可以给一些通用的JAVA解释。 thx –