我希望获得有关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();
}
但坦率地说,对我来说不太清楚。请解释一下?
答案 0 :(得分:13)
作为Project Coin的一部分,Java 7提出了空安全方法调用,但它没有进入最终版本。
查看所有建议的功能,以及最终在此处选择的内容 - 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;
}
我认为你不能比这简洁明了。恕我直言,试图将该代码合并为一行,只会使代码不那么清晰,可读性也会降低。
答案 1 :(得分:1)
如果我正确理解你的问题而你想缩短代码,你可以通过写下来利用短路运算符:
if (person != null && person.getAddress() != null)
return person.getAddress().getPostCode();
如果第一个条件为假,则不会检查第二个条件,因为&&运算符在遇到第一个false
时会使逻辑短路。
答案 2 :(得分:0)
它应该适合你:
public String getPostcode(Person person) {
return person != null && person.getAddress() != null ? person.getAddress().getPostcode() : null;
}
同时检查此主题:Avoiding != null statements
答案 3 :(得分:0)
如果要避免两次调用getAddress,可以执行以下操作:
Address address;
if (person != null && (address = person.getAddress()) != null){
return address.getPostCode();
}