【发布时间】:2020-01-14 15:10:08
【问题描述】:
我现在正在使用 Optional,我必须从 findFirst() 方法返回一个字符串。我知道 findFirst 返回一个 Optional 但我想在方法签名中返回一个 Optional<String>。
@Override
public Optional<String> findBetweenMinAgeAndMaxAge(int kidAge, String id) {
String query = buildFindRoomByKidAge();
JsonObject params = JsonObject.create()
.put(JAVA_TYPE_PARAM, ShipRoom.class.getName())
.put(ID_PARAM, id)
.put(KID_AGE_PARAM, kidAge);
N1qlQuery queryWithParameter = N1qlQuery.parameterized(query, params);
return template.findByN1QLProjection(queryWithParameter, Room.class)
.stream()
.findFirst();
}
有没有什么复杂的方法可以做到这一点?
我做了下一个:
@Override
public Optional<String> findBetweenMinAgeAndMaxAge(int kidAge, String id) {
String query = buildFindRoomByKidAge();
JsonObject params = JsonObject.create()
.put(JAVA_TYPE_PARAM, ShipRoom.class.getName())
.put(ID_PARAM, id)
.put(KID_AGE_PARAM, kidAge);
N1qlQuery queryWithParameter = N1qlQuery.parameterized(query, params);
return Optional.ofNullable(template.findByN1QLProjection(queryWithParameter, Room.class)
.stream()
.findFirst().get().getId());
}
但我认为应该有更好的解决方案。有什么建议吗?
谢谢!
【问题讨论】: