在带有对象的列表上使用方法Cast而不是Lambda



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

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

上面写着:

用方法引用替换此lambda。

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());
}

最新更新