当前位置: 首页 > 知识库问答 >
问题:

Java可选映射和筛选器未按预期工作[重复]

曹理
2023-03-14

我有以下代码,它应该从modelService返回orgId,但不能使用可选的

 public Long getOrgId(String someId) {
    return this.getSpecialOrgId(someId).orElse(this.getById(someId).getOrgId());
}

private Optional<Long> getSpecialOrgId(String someId) {
    return modelService.getModel(someId).map(Model::getOrgId).filter(this::isConditionTrue);
}

此代码不起作用getspecialorgid总是返回empt

但是下面的代码工作得很好,不知道上面的代码有什么问题

 private Long getOrgId(String someId) {
     Optional<Long> orgIdFromModel = this.getSpecialOrgId(someId);
     if (orgIdFromModel.isPresent()) {
         return orgIdFromModel.get();
     }
     return this.getById(someId).getOrgId();
 }

 private Optional<Long> getSpecialOrgId(String someId) {
     Optional<Model> modelOptional = modelService.getModel(someId);
     if (modelOptional.isPresent()) {
         Model model = modelOptional.get();
         if (isConditionTrue(model.getOrgId())) {
             return of(model.getOrgId());
         }
     }
     return empty();
 }

其中isconditiontrue总是true,这是正确的代码,我只更改了一些变量名

共有1个答案

祁权
2023-03-14

看来应该将getorgid中的orelse替换为orelseget(()->getById(someId).getorgid()

 类似资料:
  • 如何过滤

  • 我目前正试图研究并发性,特别是“volatile”关键字。 通过声明计数器变量为volatile,所有对计数器变量的写入都将立即写回主存。此外,计数器变量的所有读取都将直接从主存中读取。下面是计数器变量的volatile声明的外观 和 当线程写入易失性变量时,不仅易失性变量本身会被写入主内存。此外,线程在写入易失性变量之前更改的所有其他变量也会刷新到主内存中。当一个线程读取一个易失性变量时,它还将

  • 问题内容: 具有以下映射: 如果我添加以下代码,即使它与映射不匹配(丢失)也可以完美地工作,但ES不会抱怨。 如果我添加以下条目,它也可以工作。 似乎该映射未对我添加的元素生效。尝试映射类型时我做错了什么? 问题答案: 这是Elasticsearch的默认行为,在大多数情况下是理想的。但是对于您的情况,如果您不想允许索引未在映射中定义的字段,则需要更新映射并将其属性设置为。基本上,您的映射定义应如

  • 我目前正在用maven 3.1.1和maven war插件2.4建立一个web项目(http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html). 特别是,我正在尝试用maven war插件复制和过滤资源,这种方式我在过去已经做过了,而且很有效。以下是相关pom配置: WAR插件配置 激活的配置文件定义: META-INF/上下文。

  • 我正在使用Dozer在Document类和DocumentManagementBean类之间进行映射,这都是我自己制作的。两者都有一个Joda DateTime类型的属性,即getter和setter,名为dateAdded。 当文档对象d的属性dateAdded=x时,调用映射器。map(d,DocumentManagementBean.class)所有字段都会正确地自动映射(因为我完全控制代码

  • 我有一个具有两个外键和多对一关联(到表、检查点和设置)的表选项:db Schema。 完整堆栈跟踪是: org.springframework.dao.DataIntegrityViolationException:不能执行语句;SQL[N/A];约束[null];嵌套异常是org.hibernate.exception.constraintViolationException:在org.spri