Java 爪哇<;可选>;对象为null或对象';s属性为空?

Java 爪哇<;可选>;对象为null或对象';s属性为空?,java,optional,Java,Optional,我想将这个遗留Java示例代码迁移到Java8 public String getUserSex(Person person) { if(person != null) { if(person.getSex() != null) { return person.getSex(); } } return null; } 如何使用可选将其迁移到Java 8?您可以按如下方式实现它: public Optional

我想将这个遗留Java示例代码迁移到Java8

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

    return null;
}  

如何使用
可选
将其迁移到Java 8?

您可以按如下方式实现它:

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

public可选getUserSex(个人)
{
返回可选的.ofNullable(person).flatMap(
p->Optional.ofNullable(p.getSex())
);
}

您的问题到底是什么?您应该使用Optional.ofNullable(),因为getSex方法可以返回null,如给定代码所示。
 getUserSex(new Person()).isPresent()
public Optional<String> getUserSex(Person person)
{
    return Optional.ofNullable(person).flatMap(
        p -> Optional.ofNullable(p.getSex())
    );
}