在包含对象的列表上使用方法转换而不是 Lambda

Using Method Cast instead of Lambda on List with Objects

我目前正在修复项目中的一些 Sonar - Codesmells。 Sonar 向我指出了这个方法:

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

它说:

Replace this lambda with a method reference.

PortalSpecificAuthorization 是我自己编码的对象。我无法通过方法转换为这种情况找到易于使用的解决方案。
在这种情况下正确的用法是什么?

Sonar 需要方法引用而不是 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());
}