Нуль-безопасный вызов метода Java7
Я хочу получить подробную информацию об этой функции Java7, как этот код
public String getPostcode(Person person)
{
if (person != null)
{
Address address = person.getAddress();
if (address != null)
{
return address.getPostcode();
}
}
return null;
}
Можно сделать что-то вроде этого
public String getPostcode(Person person)
{
return person?.getAddress()?.getPostcode();
}
Но, откровенно говоря, это не очень понятно для меня. Пожалуйста, объясните?
Ответы
Ответ 1
Нуль-безопасный вызов метода был предложен для Java 7 в составе Project Coin, но он не дошел до финальной версии.
Посмотрите все предлагаемые функции и все, что окончательно выбрано здесь - https://wikis.oracle.com/display/ProjectCoin/2009ProposalsTOC
Что касается упрощения этого метода, вы можете немного изменить:
public String getPostcode(Person person) {
if (person == null) return null;
Address address = person.getAddress();
return address != null ? address.getPostcode() : null;
}
Я не думаю, что вы можете получить кратким и ясным, чем это. ИМХО, пытаясь объединить этот код в одну строку, сделает код менее понятным и менее читаемым.
Ответ 2
Если я правильно понимаю ваш вопрос и вы хотите сделать код короче, вы можете воспользоваться операторами короткого замыкания, написав:
if (person != null && person.getAddress() != null)
return person.getAddress().getPostCode();
Второе условие не будет проверяться, если первое ложно, потому что && оператор замыкает логику, когда встречает первый false
.
Ответ 3
Он должен работать для вас:
public String getPostcode(Person person) {
return person != null && person.getAddress() != null ? person.getAddress().getPostcode() : null;
}
Также проверьте этот поток: Избегайте!= нулевые утверждения