下面是我的代码:
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>’
处理此错误的最佳方法是什么?
答案 0 :(得分:0)
您不能使用基本类型作为Optional.ofNullable需要Objects,另一点是int的默认值为0,这将使您的方案失败。
Optional<Integer> sizeOfOjectArray = Optional.ofNullable(new Integer(boardFeedContributorResponse.extract().jsonPath().getList("boards").size()));
这将以上面给定的方式工作,但是更好地获取列表而不是大小,并使用isEmpty方法检查列表是否包含对象。
注意:可选,如果大小合适,则可以删除空检查 看起来不太好,对于列表来说,如果getList方法可以 返回null。