JavaMail message.getSubject().equals 给出 NullPointerException
JavaMail message.getSubject().equals gives NullPointerException
我在使用 JavaMail 时遇到了问题,而且我无法理解它。我想在我的邮箱中搜索具有特定主题(在本例中为 1234)的邮件。我用 message.getSubject() 获取主题并将其放入 if 语句中并查看它是否等于 1234,但它每次都会给我一个 NullPointerException。奇怪的是,如果我只是想打印出邮件的主题(没有 if 语句),似乎没有任何问题。
这是代码:
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
//Get all messages from inbox
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
if (messages[i].getSubject().equals("1234")) {
System.out.println("Message found");
}
}
这是错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
在以下行:
if (messages[i].getSubject().equals("1234")) {
希望大家能帮我解决这个问题
这种代码在 NullPointerException
方面是危险的:
if (messages[i].getSubject().equals("1234")) {
你可以在这里得到两个NullPointerException
的:
- messages[i] 可以是
null
并抛出一个 NullPointerException
.
- messages[i].getSubject() 也可以
null
并且做同样的事情。
我的建议是走防御路线并将其重写为:
if(messages[i] != null && "1234".equals(messages[i].getSubject())) {
这不会抛出 NullPointerException
,因为它会检查 NullPointerException
的可能候选者是否不为空 (messages[i]
) 并且通过将 "1234"
作为第一个比较项。 "1234"
不可能是 null
.
我在使用 JavaMail 时遇到了问题,而且我无法理解它。我想在我的邮箱中搜索具有特定主题(在本例中为 1234)的邮件。我用 message.getSubject() 获取主题并将其放入 if 语句中并查看它是否等于 1234,但它每次都会给我一个 NullPointerException。奇怪的是,如果我只是想打印出邮件的主题(没有 if 语句),似乎没有任何问题。
这是代码:
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
//Get all messages from inbox
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
if (messages[i].getSubject().equals("1234")) {
System.out.println("Message found");
}
}
这是错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
在以下行:
if (messages[i].getSubject().equals("1234")) {
希望大家能帮我解决这个问题
这种代码在 NullPointerException
方面是危险的:
if (messages[i].getSubject().equals("1234")) {
你可以在这里得到两个NullPointerException
的:
- messages[i] 可以是
null
并抛出一个NullPointerException
. - messages[i].getSubject() 也可以
null
并且做同样的事情。
我的建议是走防御路线并将其重写为:
if(messages[i] != null && "1234".equals(messages[i].getSubject())) {
这不会抛出 NullPointerException
,因为它会检查 NullPointerException
的可能候选者是否不为空 (messages[i]
) 并且通过将 "1234"
作为第一个比较项。 "1234"
不可能是 null
.