どのようにチェック属性(オブジェクト)の場合は、Javaでnullであります

Vrian7:

私はその後、私は親オブジェクトからすべての情報をのgettin、レポートの特定のデータを必要とします

Object1

それは多くの属性、オブジェクト属性を持っています

Object11, Object12, Object13, attr1, attr2...

属性には、あまりにも多くの属性を持っています

Object111, Object131, Object132,..

今では私は、5つのレベルのデータ属性を得ました。

私は私のレポートに情報を送信すると、それは言う、エラー:原因:ヌル

object1.getIdObject11().getIdObject111().getDescription;

Object111がnullであるので、エラーをtrows

私が使用してみました

object1.getIdObject11().getIdObject111().getDescription==null?'':object1.getIdObject11().getIdObject111().getDescription;

それだけで説明がnullで、かつ同じエラーをスローした場合、私は、オブジェクトを検証しようとした検証します

if(object1.getIdObject11().getIdObject111() == null) {
    var = object1.getIdObject11().getIdObject111().getDescription;
} else {
    var = "";
}

Object11がnullのときしかし、それは同じエラーをスローします。

私は(30の属性のように取得する必要があります)その良い方法は属性ごとにこれをやってないと思います

if(object1.getIdObject11()!=null) {
    if(object1.getIdObject11().getIdObject111()!=null) {
        if(object1.getIdObject11().getIdObject111().getIdObject1111()!=null) {
             //...
         }
    }
}

私は(paramsを得て、文字を混合したレポート、内部で設定されているため)、それはこのような大規模なコードなしで、ある場合はnullオブジェクトとセット「」(空白)があるかどうかを確認します。

reportline1 = "Area: "+object1.getIdObject11().getIdObject111().getName;

dehasi:

あなたのコードブレークデメテルの法則つまり、設計自体をリファクタリングする方が良いでしょう理由です。回避策としては、使用することができますOptional

   var = Optional.ofNullable(object1)
    .map(o -> o.getIdObject11())
    .map(o -> o.getIdObject111())
    .map(o -> o.getDescription())
    .orElse("")

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=335802&siteId=1