2017-11-29 16 views
0

JavaMailに問題があり、わかりません。私は特定の件名(この場合1234)のメールのために私のメールボックスを探してみたい。私はmessage.getSubject()で件名を取得して、それをifステートメントに入れて、それが1234と等しいかどうかを調べますが、毎回NullPointerExceptionを返します。奇妙なことは、私がメールの件名を(if文なしで)出力するだけで何も間違っているとは思わないということです。JavaMailのmessage.getSubject()。equalsはNullPointerExceptionを返します。

これはコードです:

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")) { 

私はあなたたちはこの問題で私を助けることを願って。

+0

件名のないメッセージですか?あなたがテストできること。 –

答えて

1

この種のコードはNullPointerExceptionの面で危険です。■年代

if (messages[i].getSubject().equals("1234")) { 

あなたはここ2 NullPointerException得ることができます 'は:

  1. メッセージを[i]をnullなると1 NullPointerExceptionを投げることができます。
  2. messages [i] .getSubject()はnullでも同じことをすることができます。 (それはNullPointerExceptionのための可能な候補がnullでないかどうかをチェックするので、これは、NullPointerExceptionをスローしません

    if(messages[i] != null && "1234".equals(messages[i].getSubject())) { 
    

    messages[i]

私の提案は守備のルートを移動し、これを再作成することです)、比較は第1の比較項として"1234"を入れて反転されます。 "1234"は今までにないでしょうnull

+0

ありがとうございました!私はまず、messages [i]がnullでなく、messages [i] .getSubject()がnullでないかどうかを調べることで問題を解決しました。そのif文の中で、私はequalsメソッドで古いif文を得ました。 – Robin

関連する問題