gpt4 book ai didi

java - 如何从 ifPresentOrElse 语句中获取对象数据?

转载 作者:行者123 更新时间:2023-11-30 05:23:04 33 4
gpt4 key购买 nike

我正在尝试从对象中获取一些数据。我有一小段代码,其中:

UserAccessValidator 只是一个 validator ,validateAccessToAccount 方法采用 Long,并且在未授予访问权限时抛出异常。就这么简单。

userAccessValidator.validateAccessToAccount(
peripheralRepository.findById(peripheralId)
.ifPresentOrElse(p -> p.getAccount().getId(),
() -> {throw new NotFoundException(Peripheral.class);}));

它无法编译,我得到一条信息,Long 是必需的,但提供的是无效的。

如何修复这段代码以使其正常工作?我想获取帐户 ID,但我不知道如何实现这一点...更详细的解释将非常感激;)

最佳答案

ifPresentOrElse​() 的返回类型为 void,因此不适合返回值。

使用mapOptional内的值映射到所需的帐户ID。这将返回另一个Optional

然后您可以调用orElseThrow,如果Optional为空,它将抛出异常,并返回存储在该Optional中的值,如果不是。

userAccessValidator.validateAccessToAccount(
peripheralRepository.findById(peripheralId)
.map(p -> p.getAccount().getId())
.orElseThrow​ (() -> {throw new NotFoundException(Peripheral.class);});

关于java - 如何从 ifPresentOrElse 语句中获取对象数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59194872/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com