我正在開發一個專案(Java 17),其中我有一個具有兩個屬性actionId(字串)和right(布爾)的物件串列。我正在嘗試獲取具有 right = true 的物件的 actionId 并將結果存盤為字串串列。
這是我的代碼:
List<String> usserValidActionsArray = userActionGatewayDTO.stream().filter(UserActionGatewayDTO::getRight)
.map(UserActionGatewayDTO::getActionId).toList();
我的代碼運行良好,但 Sonar 阻止我說:
重構代碼,以便使用此流管道
任何人都可以向我建議如何改進我的代碼以使其符合要求嗎?
uj5u.com熱心網友回復:
我猜 Sonar 不知道 Stream.toList() (在 Java 16 中引入),并認為它是一個非終端操作。這似乎是錯誤SONAR-3746(另請參閱Stream#toList (JDK 16) is not Recognized as terminal operator)。這個問題應該在 SonarLint 7.2 中解決。
我想,這意味著您需要 SonarQube 9 或更高版本,因為 SonarQube 9.0 是第一個宣布支持 Java 16 的版本,而 SonarQube 9.1 提到為 Java 16 添加新規則。但是,我不熟悉 SonarLint 和 SonarQube 如何更新以這種方式進行互動。
作為一種解決方法,您可以替換toList()為collect(Collectors.toList()).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/477126.html
下一篇:“org.hibernate.PersistentObjectException:分離的物體傳遞給堅持”我無法解決的錯誤
