使用方法强制转换而不是对象列表上的lambda

dojqjjoe  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(298)

目前我正在修复我项目中的一些声纳代码。sonar将我指向这个方法:

protected List<Long> rolesIdsFromPortalSpecificAuthorizations(final List<PortalSpecificAuthorization> portalSpecificAuthorizations) {
             return portalSpecificAuthorizations.stream().map(portalSpecificAuthorization -> portalSpecificAuthorization.getId()).collect(Collectors.toList());
}

它说:
用方法引用替换此lambda。
这个 PortalSpecificAuthorization 是我自己编码的一个对象。对于这种情况,我无法通过方法强制转换找到易于使用的解决方案。
在这种情况下正确的用法是什么?

9vw9lbht

9vw9lbht1#

声纳想要一个方法参考,而不是lambda。
替换此部分:

portalSpecificAuthorization -> portalSpecificAuthorization.getId()

用这个

PortalSpecificAuthorization::getId

有关方法引用的详细信息:https://www.javatpoint.com/java-8-method-reference
完整代码:

protected List<Long> rolesIdsFromPortalSpecificAuthorizations(final List<PortalSpecificAuthorization> portalSpecificAuthorizations) {
    return portalSpecificAuthorizations.stream()
              .map(PortalSpecificAuthorization::getId)
              .collect(Collectors.toList());
}

相关问题