请考虑以下java代码:
Optional.of("some.constant.value")
当参数是常量时,如何使用任何值的Optional.of()
?
答案 0 :(得分:1)
可选通常用作函数的返回值,该函数可能返回值,也可能不返回值。这是一种避免处理空值的技术。
E.g。假设您有一个返回clearInterval(timerId);
的函数,您可以使用它来提供默认值:
Optional<Integer>
您要引用的工厂函数是如何在被调用函数中构造Optional:
int x = person.getAge().orElse(42);
答案 1 :(得分:1)
这完全是语境,如果没有这种背景,任何人都不可能真正说出来。
但是......有几次我看到这样的事情很有用(也许你可以确定哪一个与你的特定环境相关:
某个方法为Optional
的接口。
interface PotentiallyLimited {
OptionalInt getLimit();
}
class LimitedToTen implements PotentiallyLimited {
private static final OptionalInt LIMIT = OptionalInt.of(10);
@Override
public final OptionalInt getLimit() {
return LIMIT;
}
}
在这种情况下,将变量存储为常量会使其每次都必须生成一个新实例。
一个类,其中某些依赖项将返回Optional
,但可能不存在。
class Thing {
private static final Optional<String> DEFAULT_PREFERENCE = Optional.of("blue");
private final @Nullable PreferenceProvider provider;
public void useDependency() {
final Optional<String> preference;
if (dependency != null) {
preference = provider.getPreference();
} else {
preference = DEFAULT;
}
// Use the preference here...
}
}
同样,将它作为常量表示您不需要在每次调用时创建新实例。
我见过的最后一个案例,说你有一些界面有boolean isError();
和另外Optional<String> getErrorReason();
。有一个总是代表错误的实现是完全合理的,然后再次从已知常量String
显式设置Optional有助于避免创建大量实例。
我确信还有很多其他时间可能有用。