我最近发现了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等方法。
答案 0 :(得分:2)
我认为返回Optional.ofNullable
的替代实现很好。
在制作课程Serializable
时,我必须自己进行此更改。正如斯图尔特马克斯在his answer中所说的那样,使字段成为可选字段几乎没有什么价值(您可以随时使用mobile()
代替mobile
来获取字段的Optional
视图