2017-10-16 118 views
1

我想这个传统的Java示例代码迁移到Java 8Java <Optional>对象为空或对象的属性为空?

public String getUserSex(Person person) { 
    if(person != null) { 
     if(person.getSex() != null) { 
      return person.getSex(); 
     } 
    } 

    return null; 
} 

如何使用Optional这个迁移到Java 8?

+0

究竟什么是你的问题? –

回答

0

如下您可以实现它:

public Optional<String> getUserSex(Person person) { 
    if(person != null) { 
     return Optional.ofNullable(person.getSex()); 
    } 
    return Option.empty(); 
} 

在这种情况下getUserSex调用者总是会得到一个类型Optional的,因此调用方不能执行null检查。

相反,调用者可以询问可选的值是否存在。

getUserSex(new Person()).isPresent() 
+1

您应该使用Optional.ofNullable(),因为getSex方法可以像给出的代码所示那样返回null。 – CodeMatrix