Java 从 findFirst() 返回一个 Optional<String>

标签 java return option-type

我现在正在使用 Optional,我必须从 findFirst() 方法返回一个 String。我知道 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());
    }

但我认为应该有更好的解决方案。有什么建议吗?

谢谢!

最佳答案

使用Optional.map() :

 return template.findByN1QLProjection(queryWithParameter, Room.class)
                .stream()
                .findFirst()
                .map(Room::getId)

map() 接受一个函数,如果可选值中存在值,则返回结果。

关于Java 从 findFirst() 返回一个 Optional<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57911804/

相关文章:

java - 如何使用 postgresql initdb 创建一个临时数据库?

python正则表达式给出空字符串

android - 在 Activity 堆叠之前终止 Activity,因此召回 Activity 不会导致溢出

ios - [CLLocationCoordinate2d]?没有名为下标的成员

Javascript:不推荐使用参数数组吗?

java - 检查 extends jTextFormattedField 是否为空

java - 将间隔添加到日期时间

swift - 为什么可选常量不会自动具有默认值 nil

java - 解析 whereEqualTo

java - Java for循环中的return语句不退出方法