为什么java OptionalInt没有像Optional那样的or()方法<T>?



对于Optional<T>,有一个or()方法,这样您可以将其他事物中的选项链接在一起

var o1  = Optional.<String>empty();
var o2 = Optional.of("some string");
Optional<String> o3 = o1.or(() -> o2); // o3 = o2

OptionalInt无此功能。你会怎么做类似的事情呢?

不使用

var oi1 = OptionalInt.empty();
var oi2 = OptionalInt.empty();
OptionalInt oi3 = oi1.isPresent() ? oi1 : oi2;

正如评论中所说,OptionalInt类型不允许以任何其他方式执行此操作,而不是您自己建议的方式:

public OptionalInt orElse(OptionalInt o1, OptionalInt o2) {
return o1.isPresent() ? o1 : o2;
}

如果需要,可以更改为与Supplier一起工作

你最好一开始就使用Optional<Integer>

至于为什么,这几乎是不可能回答的。

最新更新