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

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

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

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

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

9vw9lbht

9vw9lbht1#

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

  1. portalSpecificAuthorization -> portalSpecificAuthorization.getId()

用这个

  1. PortalSpecificAuthorization::getId

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

  1. protected List<Long> rolesIdsFromPortalSpecificAuthorizations(final List<PortalSpecificAuthorization> portalSpecificAuthorizations) {
  2. return portalSpecificAuthorizations.stream()
  3. .map(PortalSpecificAuthorization::getId)
  4. .collect(Collectors.toList());
  5. }
展开查看全部

相关问题