Pab*_*blo 4 java oop generics java-ee
因为我有一段时间没有使用泛型,所以我对这个例子很困惑.
我有以下基础抽象类:
public abstract class ExcelReader<T>{
protected T type;
protected GenericResolver resolver;
public ExcelReader(){
super();
resolver=ResolverFactory.createResolver(type.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的子类如下:
public class POIReader<T> extends ExcelReader<T>{
}
//...Implementation of methods ommited for brevity
Run Code Online (Sandbox Code Playgroud)
现在在我的服务中,我正在以下列方式创建一个新对象:
ExcelReader<MessageDTO> reader=new POIReader<MessageDTO>();
Run Code Online (Sandbox Code Playgroud)
但是,当调用ExcelReader构造函数时,type属性为null,并且在创建解析程序时抛出NullPointer异常.
我想您可以了解我正在尝试使用上面的代码片段,我已经看到使用属性字段来保存Parametized Class类型的示例.
但是我很困惑为什么我在type属性中得到null,我怎么能避免它.非常感谢.
Jon*_*eet 13
你正在打电话,type.getClass()但在那一点type上保证是空的.没有其他代码可以设置它,所以你怎么期望它工作?你说你对为什么它是空的感到困惑 - 但是你没有展示任何会使它成为非空的东西.
我怀疑你想要的东西:
public abstract class ExcelReader<T>{
protected final Class<T> type;
protected GenericResolver resolver;
public ExcelReader(Class<T> type){
this.type = type;
resolver = ResolverFactory.createResolver(type);
}
}
Run Code Online (Sandbox Code Playgroud)
您还想在子类上引入相同类型的参数.