如何将Java可选与int返回类型一起使用?

时间:2018-08-14 07:25:22

标签: java java-8 optional

下面是我的代码:

int sizeOfOjectArray = boardFeedContributorResponse.extract().jsonPath().getList("boards").size();

当jsonResponse中没有面板(按计数)时,此int值给我提供nullPointerException。 为了解决这个问题,我使用了:

Optional<Integer> sizeOfOjectArray = Optional.ofNullable(boardFeedContributorResponse.extract().jsonPath().getList("boards").size());

我的下一个操作是删除存在的那些板:

if(sizeOfOjectArray.isPresent()) {
            List <Object> contributorBoardKeyList = new ArrayList <Object>();

            for (int i = 0; i < sizeOfOjectArray; i++) {
                contributorBoardKeyList.add(boardFeedContributorResponse.extract().path("boards[" + i + "].boardKey"));
            }
            for (int i = 0; i < sizeOfOjectArray; i++) {
                String boardKey = (String) contributorBoardKeyList.get(i);
                LeaveBoardBaseScript.leaveBoardService(boardKey, deviceContributorInfoTemp);
            }
        }
        else
        {
            log("There is no Board present.");
        }

但是在使用可选选项之后,我看到了这个Java错误:

运算符“ <”不能应用于“ int”,‘java.util.optional<java.lang.integer>’

处理此错误的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您不能使用基本类型作为Optional.ofNullable需要Objects,另一点是int的默认值为0,这将使您的方案失败。

Optional<Integer> sizeOfOjectArray = Optional.ofNullable(new Integer(boardFeedContributorResponse.extract().jsonPath().getList("boards").size()));

这将以上面给定的方式工作,但是更好地获取列表而不是大小,并使用isEmpty方法检查列表是否包含对象。

  

注意:可选,如果大小合适,则可以删除空检查   看起来不太好,对于列表来说,如果getList方法可以   返回null。