Java8使用可选的

Java8使用可选的,java,java-8,optional,Java,Java 8,Optional,我有一个代码块: public Builder withMultiValueMap(MultiValueMap<String, String> multiValueMap) { ... withRespondentId(Long.valueOf(multiValueMap.getFirst("respondentId"))); ... return this; } …但我想做得更好 是否可以使用java8 Optional或其他东西来简化?与此表达式具有相同结果的语

我有一个代码块:

public Builder withMultiValueMap(MultiValueMap<String, String> multiValueMap) {
  ...
  withRespondentId(Long.valueOf(multiValueMap.getFirst("respondentId")));
  ...
  return this;
}
…但我想做得更好


是否可以使用java8 Optional或其他东西来简化?

与此表达式具有相同结果的语法:

respondentId == null? null: Long.valueOf(respondentId)


因为它实际上更长,所以它不是一个完全的胜利,尽管它可能更可读。

与此表达式具有相同结果的语法:

respondentId == null? null: Long.valueOf(respondentId)


因为它实际上更长,所以它不是一个完全的胜利,尽管它可能会更具可读性。

如果
MultiValueMap
是您自己的类,您可以将
getFirst
迁移到

Optional<V> getFirst(K key);

multiValueMap.getFirst(key).map(Long::valueOf).getOrElse(null);
可选的getFirst(K键);
multiValueMap.getFirst(key).map(Long::valueOf).getOrElse(null);

如果
MultiValueMap
是您自己的类,您可以将
getFirst
迁移到

Optional<V> getFirst(K key);

multiValueMap.getFirst(key).map(Long::valueOf).getOrElse(null);
可选的getFirst(K键);
multiValueMap.getFirst(key).map(Long::valueOf).getOrElse(null);

我不知道还有更好的
Optional.ofNullable(respondentId).map(Long::valueOf).orElse(null))
Super。这正是我需要的!非常感谢。请添加答案以将其标记为已解决。代码将进行更清晰的重构,以便
withRespondentId
方法不需要
null
(可能使用
null
场景集初始化)。然后可以编写
可选的.ofNullable(respondentId).map(Long::valueOf).ifPresent(this::withRespondentId)我不知道更好的
Optional.ofNullable(respondentId).map(Long::valueOf).orElse(null))
Super。这正是我需要的!非常感谢。请添加答案以将其标记为已解决。代码将进行更清晰的重构,以便
withRespondentId
方法不需要
null
(可能使用
null
场景集初始化)。然后可以编写
可选的.ofNullable(respondentId).map(Long::valueOf).ifPresent(this::withRespondentId)org.springframework.util.MultiValueMaporg.springframework.util.MultiValueMapYeah,我非常喜欢第一个版本。@LouisWasserman如果您有一个可空引用,我通常认为为了调用可选方法而将其装箱到可选中是错误的,而只是立即取消装箱。@StuartMarks是吗?我们在这里是一致的。是的,我非常喜欢第一个版本。@LouisWasserman如果你有一个可为空的引用,我通常认为为了调用可选方法而将其装箱到可选中是错误的,而只是立即取消装箱。@StuartMarks是吗?我们在这里意见一致。