有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我需要使用一个Java8可选方法,该方法要么获取包装的值,要么调用一个void返回消费者lambda

我对在Java8中使用optionals还不熟悉。我知道orElseGet()方法接受一个供应商,orElseThrow()也接受一个抛出异常的供应商。如果我可以构造自己的异常,并在触发异常时执行某些操作,那么OrelsThrow()可能是一个不错的选择

我的主要目标是使用一种方法,该方法要么获取未包装的值,要么如果可选的包装为null,则实际执行一个完全不同的函数

寻找最接近的东西:

class DoInsteadClass {
     public void doInstead() {
          // Do this instead
     }
}


Optional<String> myString = "Hello";
num.orElse(DoInsteadClass::doInstead);

如果实现这一点的唯一方法是orelsethorn(),并且只要我能用“do this Injust”代码处理异常,那也应该没问题。它只是让我的代码库更大,因为我必须为2或3种情况创建一些不同的定制实用程序供应商,其中一些可选值将返回null

问题是。ifPresent()使用该值调用指定的使用者,否则不执行任何操作。如果值为空,我需要它做些什么。我当前的代码使用了一种自定义的变通方法,首先检查值是否为null,如果为null,则执行所选的函数。那么下一条语句就是检查ifPresent()的语句。所以这是做同样的事情,我只是在寻找一个更糖衣,一个声明版本


共 (0) 个答案