gpt4 book ai didi

java - 使用工厂模式时出现 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 11:46:24 25 4
gpt4 key购买 nike

我在我的 Java 代码中使用工厂模式。工厂使用抽象的 CSVHeader 类。 CSVHeader 有一个抽象方法和几个具体方法。 header 创建两个继承类之一(下面称为 TypeOne 和 TypeTwoHeader)。这些类有自己的一个抽象方法版本。

我正在尝试使用 Eclipse 调试器,但我被难住了,因为调试器甚至没有到达 getHeader() 方法的第一行——调试器直接从调用类跳转到 NullPointerException 类。这是异常的输出:

Eclipse java.lang.NullPointerException
at com.company.package.StationWriter.<init>(StationWriter.java:98)
...

我想知道是否有人在 Eclipse 中或在 Java 中使用工厂模式时看到过这种行为?在 <init> 周围做尖括号暗示这是我使用或不使用泛型的方式的问题?我正在使用 Eclipse Indigo Service Release 1内部版本号:20110916-0149。以下是关于我的实现的更多信息:

HeaderFactory 的getHeader() 方法返回继承自CSVHeader 的子类之一;返回哪个子类取决于输入变量。这种方法从来没有出过问题,现在仍然有效。只有当我从 StationWriter 类调用它时它才会中断,该类以完全相同的方式调用它,只是参数不同。永远不会读取参数,因为代码甚至在进入 getHeader() 方法的主体之前就直接转到 NullPointerException。

StationWriter(接口(interface) CSVWriter 的具体实现)——这显示了第 98 行并且已损坏:

new StationWriter(params) {
...
CSVHeader headerWriter = new HeaderFactory().getHeader(params);
}

DeviceWriter(接口(interface) CSVWriter 的具体实现)——有效:

new DeviceWriter(params) {
...
CSVHeader headerWriter = new HeaderFactory().getHeader(params);
}

HeaderFactory(具体类):

public CSVHeader getHeader(params) {
//when debugging in StationWriter it doesn't even get to this point.
CSVHeader header;
if (something == true) {
header = new TypeOneHeader(params);
} else {
header = new TypeTwoHeader(params);
}
return header;
}

最佳答案

正如在评论中发现的那样,问题是由 null Integer 的拆箱引起的。

关于java - 使用工厂模式时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778313/

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