TyR*_*den 5 java lambda optional java-8
我不熟悉在Java 8中使用选项.我知道方法orElseGet()需要一个供应商,orElseThrow()也需要一个抛出异常的供应商.orElseThrow()可能是一个很好用的,如果我可以构造我自己的异常并在触发该异常时执行某些操作.
我的主要目标是使用一个方法来获取未包装的值,或者如果可选的包装为null,那么实际执行一个完全不同的函数.
寻找最接近的东西:
class DoInsteadClass {
public void doInstead() {
// Do this instead
}
}
Optional<String> myString = "Hello";
num.orElse(DoInsteadClass::doInstead);
Run Code Online (Sandbox Code Playgroud)
如果执行此操作的唯一方法是orElseThrow(),并且只要我可以使用'do this instead'代码处理异常,那也应该没问题.它只是使我的代码库更大,因为我必须为2或3个案例创建一些不同的自定义实用程序供应商,其中一些可选值将返回null.
问题是,.ifPresent()用值调用指定的使用者,否则什么也不做.如果值为null,我需要它来进行SOMETHING.我当前的代码使用自定义的解决方法,我首先检查值是否为null,如果是,则执行所选的函数.然后下一个语句是检查ifPresent()的语句.所以这是做同样的事情,我只是在寻找更多糖衣,一个声明版本.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |