jjzjj

Java Optional 和 orElse

coder 2024-03-22 原文

<分区>

我是 Java 选项的新手,但我看到这段代码是由另一位开发人员编写的,但我不明白:

String t = null;
Optional.ofNullable("notnull")
    .orElse(
        Optional.ofNullable(t).orElseThrow(() -> new Exception("MyException"))
    );

为什么这段代码会抛出异常?为什么它甚至会转到“orElse”分支?

这是因为一些奇怪的执行顺序吗?所以在评估 orElse 分支之前,第一个可选值没有设置?

有关Java Optional 和 orElse的更多相关文章

  1. java - Optional in orElse-Branch throws Exception - 2

    这个问题在这里已经有了答案:Java8'sorElsenotworkingasexpected(1个回答)关闭6年前。所以我在使用Optionals时遇到了一个奇怪的行为。我想知道这是否真的是一个有意的“功能”或什么……奇怪……这是给定的例子:我有一个带有Optional的方法,我想在其orElse中评估另一个可选值。如果另一个Optional不存在,我将引发IllegalArgumentException:firstOptionalVar.orElse(secondOptionalVar.orElseThrow(IllegalArgumentException::new));现在,如

  2. java - 相当于C#中Java的Optional.orElse - 2

    我正在寻找在null情况下提供默认值的良好语法。在涉及API的Java中,我习惯于使用Optional而不是null,并且想知道C#更好的可空类型是否有等效的类型?可选项Optionalx=Optional.absent();Stringy=x.orElse("NeedToCheckforNull");//y=NeedToCheckforNull@nullableStringx=null;Stringy=x==null?"NeedToCheckforNull":x;//y=NeedToCheckforNull如何使上述代码在C#中更具可读性?JavaScript允许y=x|“NeedT

  3. Java Optional 和 orElse - 2

    这个问题在这里已经有了答案:Differencebetween`Optional.orElse()`and`Optional.orElseGet()`(9个回答)WhenIneedtouseOptional.orElseGet()overOptional.orElse()(3个答案)关闭3年前。我是Java选项的新手,但我看到这段代码是由另一位开发人员编写的,但我不明白:Stringt=null;Optional.ofNullable("notnull").orElse(Optional.ofNullable(t).orElseThrow(()->newException("MyExc

  4. java - 当我需要使用 Optional.orElseGet() 而不是 Optional.orElse() - 2

    我需要对此有一个明确的解释,即使我读过这个link关于差异但没有明确说明。那么任何人都可以用代码简单地向我解释一下吗? 最佳答案 我想我开始理解你的问题了。Optional的执行顺序可能与我们在过程编程中习惯的顺序不同(Java流和其他使用lambda的代码也是如此)。我将使用Eugene’sanswer中的两个示例:o1.orElse(newMyObject());//1055e4af这是普通的旧Java:它是对orElse()的调用,以newMyObject()作为参数。因此首先评估参数并创建一个新的MyObject。然后将其传

  5. java - 如何将字符串文本添加到 orElse 和 .map - 2

    在下面的代码中,我想向.map和.orElse添加一条日志语句,以指示该值是否为真/假。换句话说,在.map我想添加“…………真的”在orElse里面我要补充“…………假”如何修改belwo代码以包含上述两个字符串。代码:returnOptionalsUtils.toOptional(this.getBuiltMovieRoomPersistentDatabase()).map(builderObj->builderObj.isOpen()).orElse(false); 最佳答案 您可以使用Optional.orElseGet来做

  6. mongodb - 在 chicagoboss 中使用 orelse (OR) 编写查询 - 2

    我在ChicagobossAPI中查找了这个查询,但找不到任何编写“OR”查询的解决方案。我必须编写如下查询:select*fromTableNamewheretable.key1="XXXX1"ORtable.key2="XXXX2"这是我的chicagoboss查询,我想检查三个标志中的任何一个是否为真,然后对继承人做一些事情。Heirs=boss_db:find(heir,[{flag1,'equals',true},{flag2,'equals',true},{flag3,'equals',true}],[{order_by,code}]).要执行这个,是否有类似的东西:Hei

  7. Java 8 stream API orElse 用法 - 2

    我想做的是过滤列表,然后将其映射并在null时使用orElse,然后将其收集回列表。现在我可以这样实现:returnusers.stream().filter(user->id.equals(user.getId())).map(user->{if(user.getData()!=null){returnuser.getData();}returnCollections.emptyMap();}).collect(Collectors.toList());但问题是:我怎样才能使这个结构更好,为什么我不能在这种情况下使用orElse? 最佳答案

  8. java - 可选 isPresent 与 orElse(null) - 2

    我在我的项目中将依赖项更新为Spring5,并被编译错误轰炸,其中findOne()的方法定义已被findById()替换,这现在返回一个Optional(如果我错了请纠正我)。在重构过程中,我遇到了多种可以选择采用的方法,因此我希望获得一些意见,以决定首选哪种方法。第一种方法:ExpectedPackageep=expectedPackageRepository.findById(1).orElse(null);if(ep!=null){ep.setDateModified(newDate());expectedPackageRepository.saveAndFlush(ep);}

  9. orElse 的 Java 可选工作不像 else - 2

    在Optional中调用optional.orElse方法时,无论元素是否存在,orElse部分都会被执行,它不会像ifelse条件那样运行。在下面的代码中,如果您在情况1中看到getNullPoJo和getDefaultPoJo都被执行,因为getNullPoJo将返回空可选在情况2中,您将获得一个带有加载值的Optional(来自getLoadedPoJo),同时执行getDefaultPoJo我只是想了解optional.orElse的工作原理。publicstaticvoidmain(String[]a){PoJopoJo1=getNullPoJo().orElse(getDe

  10. jdk8中optional的orElse和orElseGet、orElseThrow方法具有什么功能呢? - 2

    转自:http://www.java265.com/JavaCourse/202206/3724.htmlOptional简介Optional是java8中新增的API用于完美解决空指针异常使用Optional类可避免显式的空值判断所以笔者在jdk1.8的环境下,大量的使用Optional这个容器例:Optional可检测一个null容器如:Optional.ofNullable(null)此时当isPresent方法返回true时调用get()方法则可返回其对象下文笔者将着重讲述Optional中的orElse()、orElseGet() 例:未使用Optional的代码if(user!=n

随机推荐