【发布时间】:2020-07-15 21:45:47
【问题描述】:
我有以下
class Person
private String firstName;
private String familyName;
// Setters and Getters
我有以下方法
public String getFullName(Optional<Person> persons) {
return persons
.map(person -> (person.getFirstName() + " " + person.getFamilyName())).orElse("Invalid");
}
我只想检查名字或姓氏是否是null,为那个人显示"Invalid"。我正在考虑添加一种验证方法,但我确信有一种更简单的方法我想不出。
【问题讨论】:
-
将
Optional作为参数传递不是一个好主意。相反,为该方法使用Optional<String>会更好。像这样:Optional<String> getFullName(Person person) { if (person.getFamilyName() == null && person.getFirstName() == null) return Optional.empty(); return Optional.of(person.getFirstName() + " " + person.getFamilyName()); } -
@HadiJ 好点。回答完问题后也想到了。开发人员无法习惯
Optional的最初用途,它是一种返回可为空值的安全方式。将Optional作为方法参数有点违反这个原则。
标签: java java-8 functional-programming java-stream optional