0

マップを反復処理する反復子を使用するメソッドを作成し、ペアごとに多くの OR 条件でステートメントを評価します。条件が真の場合、ペアのオブジェクト (通知オブジェクト) をリスト (異常) に追加します。ただし、コンパイル時に、コンパイラはこのメソッドで NullPointerException 例外を発生させます。調べたところ、if文に問題があるようですが、原因がわかりません。誰でも私にこれを手伝ってもらえますか?ありがとう!

public List<Notification> getAnomalies(NotificationSearchCriteria notificationSearchCriteria) {

 Map<String,Notification> messageList = new HashMap<String,Notification>();
List<Notification> anomalies = new ArrayList<Notification>();

Iterator iterator = messageList.entrySet().iterator();
while (iterator.hasNext()) {

    Map.Entry pairs = (Map.Entry)iterator.next();
    Notification message = (Notification) pairs.getValue();

           if(message.getDescription().equals(notificationSearchCriteria.getDescription())||message.getSubjectName().equals(notificationSearchCriteria.getSubjectName())||message.getNotificationSubject().toString().equals(notificationSearchCriteria.getNotificationSubject().toString())||message.getNotificationType().toString().equals(notificationSearchCriteria.getNotificationType().toString())){

               anomalies.add(message);

             }
        }

    }
    return anomalies;
}
4

3 に答える 3

0

NotificationSearchCriteriaメッセージ照合コードをクラスにリファクタリングします。if最終的には「if (notificationSearchCriteria.matches(message))」になります。NotificationSearchCriteria名前から、それがの唯一の使用法であると推測しています。その意味では、カップリングは増加しません。

null のチェックはNotificationSearchCriteria構築中に実行されます。これにより、すべてのフィールドが null でないことが保証されます。一致するコードでは、そのクラス内で次のようになります。

boolean matches(Notification message) {
   if (description.equals(message.getDescription()) ||  // LHS guaranteed non-null
      foo.equals(message.getFoo()) ||
      bar.equals(message.getBar()) || // ...
   ) { return true; }
}
于 2013-02-08T15:41:42.173 に答える
0

コーディングする最善の方法は、null チェックを行うことです。

理想的には、次のようなコードが必要です。

 while (iterator.hasNext()) {

    Map.Entry pairs = (Map.Entry)iterator.next();
    Notification message = (Notification) pairs.getValue();
          if(null!=message && null!=message.getDescription() &&        
               null!=notificationSearchCriteria.getDescription() )
          {
             //Do your comparioson
          }else{
           //Handle the NullPointerException error the way you want
          }
  }
于 2013-02-08T15:54:22.977 に答える