Работа с Hibernate я использую этот вид кода много раз:элегантный способ проверить нуль
int someId = entity.getSomething() == null ? null : entity.getSomething().getId();
Этот код становится немного более грязным при попытке применить на более иерархии:
int someId = entity.getParent() == null ? null :
entity.getParent().getParent() == null ? null :
entity.getParent().getParent().getSomething() == null ? null :
entity.getParent().getParent().getSomething().getId();
Есть ли более элегантный способ сделать это?
Java 8 в 'Optional.flatMap', может быть. –
Вы должны избегать вызовов метода цепочки типа 'entity.getParent(). GetParent(). GetSomething().getId() ', потому что« общение с незнакомцами »делает код жестко связанным и, следовательно, сложнее рефакторировать. См. Также: [Закон Деметры] (https://en.m.wikipedia.org/wiki/Law_of_Demeter). –
Еще одна вещь, которая помогает: если ваш метод имеет свойство инварианта, которое он никогда не возвращает null, вам не нужно его проверять. Не позволяйте вещам быть обнуляемыми, если они действительно не должны быть. – drrob