在浏览java.util软件包的文档时,我很惊讶地发现了这一点,Optional<T>并且OptionalInt彼此之间没有任何关系。这似乎很难相信,因为它表明它们是无关的类。
Optional<T>
OptionalInt
Optional<Integer>
int
OptionalChar
Java 8引入了很多专门针对基元的内容。原因很可能是装箱原语会创建大量的废纸箱。
例如这个
OptionalInt optionalFirst = IntStream .range(0, 100) .filter(i -> i % 23 > 7) .findFirst();
在这里,Optional<Integer>结果将是不一致的。像这样的方法也ifPresent(IntConsumer consumer)可以与IntStream世界共存。Optional<Integer>会迫使您进行转换(如果需要,您可以轻松完成此操作)
ifPresent(IntConsumer consumer)
IntStream
不需要特殊支持,char或者short或byte因为所有这些都可以表示为int。缺少的是一个,boolean但是由于只有2个值,因此您无法与它们一起在流中进行太多操作。
char
short
byte
boolean