私はその後、私は親オブジェクトからすべての情報をの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;
あなたのコードブレークデメテルの法則。つまり、設計自体をリファクタリングする方が良いでしょう理由です。回避策としては、使用することができますOptional
var = Optional.ofNullable(object1)
.map(o -> o.getIdObject11())
.map(o -> o.getIdObject111())
.map(o -> o.getDescription())
.orElse("")