нулевое значение в условии if и исключение нулевого указателя Java - PullRequest
1 голос
/ 16 февраля 2012

Я хочу сделать что-то вроде ниже в Java.

String subject=null,receiver=null,subject_db=null,receiver_db=null,cc=null,cc_db=null;
suject=msg.getSubject();
sub_db=rs.getString("subject");
receiver=msg.getreceiver();
receiver_db=rs.getString("receiver");
cc=msg.getcc();
cc_db=rs.getString("cc"); String foldername;

if((subject.equals(sub_db)) && (receiver.equals(receiver_db)) && (cc.equals(cc_db)))
  foldername="spam";
else
  foldername="Inbox";

Как вы можете видеть здесь, любая из переменных может быть null. Если это произойдет, то я получаю исключение NullPointerException. Есть ли способ, которым я могу сделать, как, String s1=null и String s2=null, и если я сравниваю if(s1.equals(s2)), то мне возвращается true ... Я знаю, что приведенный выше код не сработает для достижения этой цели. Но как мне это сделать другим способом?

Мне очень жаль, если я не смог правильно объяснить свою проблему ...

Буду признателен за любую помощь ..

Спасибо ..

Ответы [ 3 ]

4 голосов
/ 16 февраля 2012

Как насчет чего-то вроде ...

private boolean nullsOrEquals(string s1, string s2)
{
  if (s1 == null)
    return (s2 == null);

  return s1.equals(s2);
}

if (nullsOrEquals(subject, sub_db) && [etc])
  foldername="spam";
else
  foldername="Inbox";
3 голосов
/ 16 февраля 2012

if((s1 == null && s2 == null) || s1.equals(s2))

1 голос
/ 16 февраля 2012

Если я понимаю, вы хотите сравнить строки, даже если они нулевые.

Для этого просто добавьте условие в оператор if, например:

if((string1 == null && string2==null) || string1.equals(s2))
{
//Your code
}
...