Я хочу получить поле из API, который присутствует внутри классов. Да, я знаю, что это против Закона Деметры, но у меня нет выбора.Как избежать проверки Nested null
Пример
getClassA().getClassB().getClassC().getClassD().getAccountId();
Так добавить нулевой чек как его плохой код запах, так что я пришел с ниже код:
try{
getClassA().getClassB().getClassC().getClassD().getAccountId();
}catch(NullPointerException ex){
S.O.P("Null Found");
}
или
ClassA a = getClassA();
if(a!=null){
ClassB b = a.getClassB();
So on.....
}
мой вопрос, который лучше подходить к вышеупомянутому или явно извлекать каждый класс и проверять значение null и перейти на следующий уровень Это противоречит закону Деметера
Посмотрите здесь: http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html Это точно объяснил проблему – NwDev
Я хотел бы сказать, что ваша архитектура/дизайн не является правильным если у вас есть такая проблема. Как вы сами сказали, вы нарушаете Закон Деметры, который может решить эту проблему. Не могли бы вы предоставить более широкий контекст того, что вы пытаетесь сделать? –
@NwDx Необязательно здесь не поможет, это будет набор вложенных вызовов isPresent() '. –