【发布时间】:2016-09-21 14:14:40
【问题描述】:
我有办法
public String getSomething(Optional<String> name) {
StringBuilder something = new StringBuilder("Hello");
name.ifPresent(n -> something.append(n));
return something.toString();
}
我使用 IntelliJ,它抱怨您不应该将 Optionals 用作参数而只能用作返回类型。我还读到您希望避免函数式编程中的副作用,并且您不应该操纵对象。
所以我一直在想如果这样做不是更好
public String getSomething(String name) {
StringBuilder something = new StringBuilder("Hello");
if (name != null) {
something.append(name);
}
return something.toString();
}
使用 Optional 有什么好处吗?我可以看到的一个好处是该方法告诉您参数是可选的。
【问题讨论】:
-
为什么要传递可选字符串?难道你不知道你有一个字符串要传递吗?
-
@MuratK。有时人们会在没有参数值的情况下调用我的方法。 String 只是作为一个例子,在我的真实案例中它实际上是一个 DateRange。然后我仍然想返回一个值。
-
@Tunaki 它确实稍微回答了我的第一部分问题。但是通过使用 Optional,我也可以使用 ifPresent,而另一个线程没有回答。
标签: java optional optional-parameters