![](/img/trans.png)
[英]Getting NullPointerException from Hashtable while using GObject method
[英]Hashtable NullPointerException
我分配了一个工作,使用哈希表设计一个简单的垃圾邮件过滤器,以存储一组“坏词”。 我们在课堂上讨论了什么是哈希表以及如何使用哈希表(即元素如何插入,线性探测,二次探测,链式探测等),但是我们从未真正讨论过如何使用Java API哈希表。为此作业。 无论如何,我尽了最大的努力来实现它,但是,我遇到了一个异常,我似乎无法使用调试器进行跟踪。
我已经放弃在这里插入代码了,我总是不得不花时间对其进行正确的格式化,但看起来还是不太好。 因此,我将其放在Pastebin上。 由于它还可以突出显示语法和行数,因此也应该使您的生活更轻松。
我在SpamFilterDriver类的以下几行中获得NullPointerExceptions:
78行
96行
115行
任何帮助,将不胜感激。 我敢肯定这可能很愚蠢,但是我暂时还没有看到。
另外,请注意,代码至少还没有完成。 SpamFilter实现Serializeable的事实将在以后使用。 另外,还有一些空方法,它们将在以后实现,我只需要先解决这个问题即可。
您必须初始化SpamFilter filter;
在您的SpamFilter
类中。 在调用其任何方法之前。
在第78行,您正在调用方法isBadWord()
。
在调用任何方法之前,请尝试如下初始化filter
。 如果不初始化过滤器,则默认值为null,并且在调用具有null的方法时会增加BOOM BOOM NPE被引发
private static SpamFilter filter = new SpamFilter();//
在每一行中,观察到您正在调用filter
方法。 Java将抛出NullPointerException
因为filter
的值为null
。
为什么其值为null
? 因为您从未为其分配值; 你只是宣布而已。 您可以在声明它时立即设置其值,或者由于它是静态字段,所以可以使用静态构造函数为其分配值。
您的filter
未初始化,因此无论在何处使用都会失败。 它仅在顶部声明为private static SpamFilter filter;
,使filter为null。
要解决此问题,请在声明为时将filter
初始化为
private static SpamFilter filter = new SpamFilter();
或在while
main()
循环之前的main()
方法中
filter = new SpamFilter();
看起来您从未初始化过filter
属性,因此无论何时尝试使用它,都会得到NullPointerException。
尝试将第6行替换为:
private static SpamFilter filter = new SpamFilter();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.