AdPosition nonNullAdPosition = Optional.ofNullable(adPositionMapper.selectByPrimaryKey(advertDto.getPositionId())) .orElseThrow(() -> new RuntimeException("AdPosition对象为空"));这段代码正常,AdPosition position2 = adPositionMapper.selectByPrimaryKey(advertDto.getPositionId()) .map(Optional::ofNullable) .orElseThrow(() -> new RuntimeException("Ad position not found"));这段代码报错Cannot resolve method 'map' in 'AdPosition',为什么
时间: 2024-01-11 10:02:34 浏览: 80
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
这是因为 `adPositionMapper.selectByPrimaryKey(advertDto.getPositionId())` 返回的类型不是 `Optional`,所以在对其进行 `map` 操作时会报错。如果你想要使用 `map` 操作,可以将其转换成 `Optional` 类型,例如:
```
Optional<AdPosition> optionalAdPosition = Optional.ofNullable(adPositionMapper.selectByPrimaryKey(advertDto.getPositionId()));
AdPosition position2 = optionalAdPosition.map(Optional::get).orElseThrow(() -> new RuntimeException("Ad position not found"));
```
或者可以直接使用 Java 8 新特性中的 `Optional.ofNullable()` 方法来实现:
```
AdPosition position2 = Optional.ofNullable(adPositionMapper.selectByPrimaryKey(advertDto.getPositionId()))
.orElseThrow(() -> new RuntimeException("Ad position not found"));
```
这样也可以实现相同的功能。
阅读全文