<分区> 分区>
我是 Java 选项的新手,但我看到这段代码是由另一位开发人员编写的,但我不明白:
String t = null;
Optional.ofNullable("notnull")
.orElse(
Optional.ofNullable(t).orElseThrow(() -> new Exception("MyException"))
);
为什么这段代码会抛出异常?为什么它甚至会转到“orElse”分支?
这是因为一些奇怪的执行顺序吗?所以在评估 orElse 分支之前,第一个可选值没有设置?
这个问题在这里已经有了答案:Java8'sorElsenotworkingasexpected(1个回答)关闭6年前。所以我在使用Optionals时遇到了一个奇怪的行为。我想知道这是否真的是一个有意的“功能”或什么……奇怪……这是给定的例子:我有一个带有Optional的方法,我想在其orElse中评估另一个可选值。如果另一个Optional不存在,我将引发IllegalArgumentException:firstOptionalVar.orElse(secondOptionalVar.orElseThrow(IllegalArgumentException::new));现在,如
我正在寻找在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
这个问题在这里已经有了答案: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
我需要对此有一个明确的解释,即使我读过这个link关于差异但没有明确说明。那么任何人都可以用代码简单地向我解释一下吗? 最佳答案 我想我开始理解你的问题了。Optional的执行顺序可能与我们在过程编程中习惯的顺序不同(Java流和其他使用lambda的代码也是如此)。我将使用Eugene’sanswer中的两个示例:o1.orElse(newMyObject());//1055e4af这是普通的旧Java:它是对orElse()的调用,以newMyObject()作为参数。因此首先评估参数并创建一个新的MyObject。然后将其传
在下面的代码中,我想向.map和.orElse添加一条日志语句,以指示该值是否为真/假。换句话说,在.map我想添加“…………真的”在orElse里面我要补充“…………假”如何修改belwo代码以包含上述两个字符串。代码:returnOptionalsUtils.toOptional(this.getBuiltMovieRoomPersistentDatabase()).map(builderObj->builderObj.isOpen()).orElse(false); 最佳答案 您可以使用Optional.orElseGet来做
我在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
我想做的是过滤列表,然后将其映射并在null时使用orElse,然后将其收集回列表。现在我可以这样实现:returnusers.stream().filter(user->id.equals(user.getId())).map(user->{if(user.getData()!=null){returnuser.getData();}returnCollections.emptyMap();}).collect(Collectors.toList());但问题是:我怎样才能使这个结构更好,为什么我不能在这种情况下使用orElse? 最佳答案
我在我的项目中将依赖项更新为Spring5,并被编译错误轰炸,其中findOne()的方法定义已被findById()替换,这现在返回一个Optional(如果我错了请纠正我)。在重构过程中,我遇到了多种可以选择采用的方法,因此我希望获得一些意见,以决定首选哪种方法。第一种方法:ExpectedPackageep=expectedPackageRepository.findById(1).orElse(null);if(ep!=null){ep.setDateModified(newDate());expectedPackageRepository.saveAndFlush(ep);}
在Optional中调用optional.orElse方法时,无论元素是否存在,orElse部分都会被执行,它不会像ifelse条件那样运行。在下面的代码中,如果您在情况1中看到getNullPoJo和getDefaultPoJo都被执行,因为getNullPoJo将返回空可选在情况2中,您将获得一个带有加载值的Optional(来自getLoadedPoJo),同时执行getDefaultPoJo我只是想了解optional.orElse的工作原理。publicstaticvoidmain(String[]a){PoJopoJo1=getNullPoJo().orElse(getDe
转自: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