use*_*932 2 java optional java-8
我读了为什么Java 8的Optional不能用在参数中.但是Optional(Int|Long|Double)
,有什么理由反对使用它们作为输入参数?
正如我所理解的那样,它们不能是空的,而是null(Optional<X>
输入参数中的主要参数参数),但可能还有其他的珊瑚礁?我应该使用OptionalInt
或Integer
使用null
而不是null
重视?
Ous*_* D. 10
这种不使用Optionals作为方法参数的想法不仅仅适用于Optional<T>
所有类型的Optionals.
当你说:
正如我所理解的那样,它们不能为空,但是为null(
Optional<X>
输入参数中的主参数参数)
首先,让我们只是让术语正确,当一个Optional<X>
包含非空引用时,我们说它存在,否则我们说它Optional<X>
是空的或不存在.你不应该说Optional<X>
包含null.
无论是类型对象T
还是基本类型的容器,所有Optionals都可以为空.
例如,如果您查看OptionalInt类文档,它会说:
容器对象,可能包含也可能不包含int值.如果存在值,则isPresent()将返回true,并且getAsInt()将返回该值.
强调我的.
当Optional不包含int值时,它是一个空的Optional.
我应该使用OptionalInt或Integer null和非null值吗?
至于使用OptionalInt
还是Integer
真的取决于你的用例.
T
和原始类型的容器一样,它们是描述性的,并且允许应用不同类型的操作来提取值(如果存在)或者如果不存在则执行其他操作.Integer
可以为任何字段赋值null.null
在具有Integer
返回类型的任何方法中返回.OptionalInt
字段(有争议的)永远不应该被认为null
是因为它首先违背了使用Optional的整个目的.null
任何具有返回类型的方法,OptionalInt
因为它首先破坏了使用Optional的整个目的.等等..
此外,一些人居然不鼓励使用原始选配的,只是因为他们缺乏map
,flatMap
和filter
方法.
从本质上讲,没有规则总是使用Optionals或者反向,而是选择最适合您需求的API.
归档时间: |
|
查看次数: |
260 次 |
最近记录: |