Java 如何从ifpresentorese语句中获取对象数据?
我正在尝试从和对象获取一些数据。我有一小段代码,其中:Java 如何从ifpresentorese语句中获取对象数据?,java,lambda,optional,Java,Lambda,Optional,我正在尝试从和对象获取一些数据。我有一小段代码,其中: UserAccessValidator只是一个验证器,方法validateAccessToAccount采用Long,并在未授予访问权限时引发异常。就这么简单 userAccessValidator.validateAccessToAccount( peripheralRepository.findById(peripheralId) .ifPresentOrElse(p -> p.getAccount().g
UserAccessValidator
只是一个验证器,方法validateAccessToAccount
采用Long
,并在未授予访问权限时引发异常。就这么简单
userAccessValidator.validateAccessToAccount(
peripheralRepository.findById(peripheralId)
.ifPresentOrElse(p -> p.getAccount().getId(),
() -> {throw new NotFoundException(Peripheral.class);}));
它没有编译,我得到的信息是Long
是必需的,但提供的是无效的
如何修复这段代码以使其正常工作?我想获得帐户Id,但我不知道如何实现这一点。。。如能提供更详细的解释,将不胜感激;) ifpresentorese()
有一个void返回类型,因此不适合返回值
使用map
将Optional
中的值映射到所需的帐户ID。这将返回另一个Optional
然后您可以调用orelsetrow
,如果Optional
为空,它将抛出异常,如果不是空,则返回存储在该Optional
中的值
userAccessValidator.validateAccessToAccount(
peripheralRepository.findById(peripheralId)
.map(p -> p.getAccount().getId())
.orElseThrow (() -> {throw new NotFoundException(Peripheral.class);});