我目前正在修复我的项目中的一些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());
}