1

コードに次の問題があります。私たちのコードは、いくつかのオブジェクトのフィールドに従って多くの決定を下す必要があり、フィールドは複雑なパスを介してアクセスされる場合があります。

public void perform(OurBean bean) {
  if (bean != null 
    && bean.getWaybill() != null
    && bean.getWaybill().getTransaction() != null
    && bean.getWaybill().getTransaction().getGuid() != null) {
     // Do some action with the guid - a string
   }
}

私がしたいのは、次のようなことです:

public void perform(OurBean bean) {
  if (notEmpty(bean, "waybill.transaction.guid")) {
     // Do some action with the guid - a string
   }
}

現在、Reflection メカニズムを使用して、独自に実装されたそのような関数があります。それを行うより良い方法はありますか?JSP EL には、getter メソッドと setter メソッドを使用した式というまさに必要なものがあります。しかし、JSP ページではなく Java コード内でオブジェクトを使用するにはどうすればよいでしょうか。これまでのところ、良いサンプルは見つかりませんでした。

4

2 に答える 2

0

Bean クラスを制御でき、Bean クラスが自動生成されない場合は、それらに便利なメソッドを追加します。

public class ProgramLogic {
    public void perform(OurBean bean) {
        if (bean != null && bean.getWaybillTransactionId() != null) {
            // Do some action
        }
    }
}

public class OurBean {
    public String getWaybillTransactionId() {
        return waybill == null ? null : waybill.getTransactionGuid();
    }
}

public class Waybill {
    public String getTransactionGuid() {
        return transaction == null ? null : transaction.getGuid();
    }
}
于 2013-06-06T17:46:02.407 に答える