Java 8可选用法

时间:2014-12-25 11:45:08

标签: java java-8 optional

我最近发现了java 8中的Optional类型,并开始在我的最新项目中使用它。我用过它:

public class User{
    private int id;
    private String email;
    private Optional<String> mobile;
    public User(int id, String email, Optional<String> mobile){
       ...
    }
    public int id(){...}
    public int email(){...}
    public Optional<String> mobile(){...}
}

今天我正在探索有关Optional的更多信息,当我遇到帖子时明确表示在返回类型以外的地方使用Optional是一种不好的做法。在从多个来源验证后,我改变了我的代码:

public class User{
    private int id;
    private String email;
    private String mobile;
    public User(int id, String email, String mobile){
       ...
    }
    public int id(){...}
    public int email(){...}
    public Optional<String> mobile(){
        return Optional.ofNullable(mobile);
    }
}

这是一个可以接受的解决方案吗?具体来说,我更改了一些方法签名,其中包含Optional to T,然后在方法内部我将T转换为Optional.ofNullable(t),以便我可以使用ifPresent,orElse,filter,map等方法。

1 个答案:

答案 0 :(得分:2)

我认为返回Optional.ofNullable的替代实现很好。

在制作课程Serializable时,我必须自己进行此更改。正如斯图尔特马克斯在his answer中所说的那样,使字段成为可选字段几乎没有什么价值(您可以随时使用mobile()代替mobile来获取字段的Optional视图