gpt4 book ai didi

java - 在 Java 中使用泛型时出现空指针异常

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:13 24 4
gpt4 key购买 nike

因为我已经有一段时间没有使用泛型了,所以我对这个例子很困惑。

我有以下基本抽象类:

public abstract class ExcelReader<T>{
protected T type;
protected GenericResolver resolver;

public ExcelReader(){
super();
resolver=ResolverFactory.createResolver(type.getClass());
}
}

现在我的子类如下:

public class POIReader<T> extends ExcelReader<T>{

}
//...Implementation of methods ommited for brevity

现在在我的服务中,我通过以下方式创建一个新对象:

ExcelReader<MessageDTO> reader=new POIReader<MessageDTO>();

但是,当调用 ExcelReader 构造函数时,type 属性为 null,因此在创建解析器时抛出 NullPointer 异常。

我想您可以了解我正在尝试使用上面的代码片段做什么,并且我已经看到使用属性字段来保存参数化类类型的示例。

但是我很困惑为什么我在 type 属性中得到 null,我该如何避免它。非常感谢。

最佳答案

您正在调用 type.getClass() 但此时 type 保证为空。还没有其他代码有机会设置它,那么您期望它如何工作?您说您对为什么它为 null 感到困惑 - 但您没有显示任何可以使其非 null 的内容。

我怀疑你想要这样的东西:

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);
}
}

您也想在子类上引入相同类型的参数。

关于java - 在 Java 中使用泛型时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8760967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com