在包含对象的列表上使用方法转换而不是 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());
}
我目前正在修复项目中的一些 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());
}