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

标签 java eclipse debugging factory-pattern

我在我的 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/

相关文章:

java - 我从 Volley 响应 'Android way' 更新 textview 的方法是否正确?

eclipse - 如何使#ifdef中的颜色主题在Eclipse中更具可读性?

python - 如何在 python 中使用 mysql 数据库调试我的 cgi 脚本。我对如何调试不熟悉

iphone - 如何在 Xcode 中以编程方式清除控制台?

java - 将 Gson 与路径一起使用

java - 将 Java 应用程序与 SQL Server 连接

java - JSONObject创建Json对象问题

java - 使用外部文件打包 Eclipse 程序

android - Android Studio和Eclipse如何使用同一个SDK(MAC版)

C# 调试 - 在不知道哪个属性具有它的情况下寻找某个值