bas*_*aad 26 java optional java-8
我已经阅读了OptionalJava 8中的目的(遗憾的是我不记得在哪里),我很惊讶作者没有提到在类中使用an Optional作为属性.
由于我在课堂上经常使用选项,我想知道这是不是很好.或者我可以更好地使用普通属性,null它们在未设置时返回?
注意:看起来我的问题可能是基于意见的,但我觉得Optional在课堂上使用的感觉真的不是要走的路(看完上面提到的帖子后).但是,我喜欢使用它,并且找不到使用它的任何缺点.
例
我想举一个例子来澄清.我有一个类Transaction,它是这样构建的:
public class Transaction {
private Optional<Customer> = Optional.empty();
....
Run Code Online (Sandbox Code Playgroud)
VS
public class Transaction {
private Customer = null;
....
Run Code Online (Sandbox Code Playgroud)
当在一个检查Customer,我认为这是最合理的使用transaction.getCustomer().isPresent()比transaction.getCustomer() != null.在我看来,第一个代码比第二个代码更清晰.
Jes*_*per 37
Java 8 Optional主要用于方法的返回值,而不是Java类的属性,如Java SE 8中的Optional中所述:
当然,人们会做他们想做的事.但是在添加此功能时我们确实有明确的意图,并且它不是一般目的
Maybe或Some类型,就像许多人希望我们这样做一样.我们的目的是为库方法返回类型提供一种有限的机制,其中需要一种明确的方式来表示"无结果",并且使用null这种方法绝对可能导致错误.这里的关键是重点用作返回类型.该类绝对不打算用作Java Bean的属性.对此的见证是
Optional没有实现Serializable,这通常是广泛用作对象属性所必需的.
我认为这是一个理论问题。
可选值的概念来自函数式语言世界。这些语言通常还支持语言级别的模式匹配,并允许您对可选值进行模式匹配。
在函数式语言中,函数调用通常返回一个可选值,其他代码可以对其进行模式匹配。
我从未见过传递可选参数作为参数,但这并不意味着这是一个糟糕的想法。不过看起来很奇怪。
| 归档时间: |
|
| 查看次数: |
18937 次 |
| 最近记录: |