Java8 使用 Optional 简化表达式
Java8 simplify expression using Optional
我有一个代码块:
public Builder withMultiValueMap(MultiValueMap<String, String> multiValueMap) {
...
withRespondentId(Long.valueOf(multiValueMap.getFirst("respondentId")));
...
return this;
}
如果 respondentId 键没有值,有时地图可以 return null。
我可以使用
之类的方式以旧方式处理它
String respondentId = multiValueMap.getFirst("respondentId");
withRespondentId(respondentId == null? null: Long.valueOf(respondentId));
...但我想做得更好!
是否可以使用 java8 可选 或其他东西进行简化?
与此表达式具有相同结果的语法:
respondentId == null? null: Long.valueOf(respondentId)
是
Optional.ofNullable(respondentId).map(Long::valueOf).orElse(null)
由于它实际上更长,所以它不是一个完整的胜利,尽管它可能会被认为更具可读性。
如果MultiValueMap
是你自己的class,你可以将getFirst
迁移到
Optional<V> getFirst(K key);
multiValueMap.getFirst(key).map(Long::valueOf).getOrElse(null);
我有一个代码块:
public Builder withMultiValueMap(MultiValueMap<String, String> multiValueMap) {
...
withRespondentId(Long.valueOf(multiValueMap.getFirst("respondentId")));
...
return this;
}
如果 respondentId 键没有值,有时地图可以 return null。 我可以使用
之类的方式以旧方式处理它 String respondentId = multiValueMap.getFirst("respondentId");
withRespondentId(respondentId == null? null: Long.valueOf(respondentId));
...但我想做得更好!
是否可以使用 java8 可选 或其他东西进行简化?
与此表达式具有相同结果的语法:
respondentId == null? null: Long.valueOf(respondentId)
是
Optional.ofNullable(respondentId).map(Long::valueOf).orElse(null)
由于它实际上更长,所以它不是一个完整的胜利,尽管它可能会被认为更具可读性。
如果MultiValueMap
是你自己的class,你可以将getFirst
迁移到
Optional<V> getFirst(K key);
multiValueMap.getFirst(key).map(Long::valueOf).getOrElse(null);