【问题标题】:Stream map with Generic type通用类型的流图
【发布时间】:2020-01-28 04:56:49
【问题描述】:

在 java 8 中创建新代码后,我想要清理 Sonar 问题。

public class Argument<T> {
    ...
    public T getValue() {
        return parameterType.transform(group.getValues());
    }
    ...
}

我的代码:

 List<Argument<?>> args = expression.match(text);
 return args == null ? null : args.stream().map(arg -> arg.getValue()).collect(Collectors.toList());

声纳说:

Lambdas 应该被替换为方法引用。方法/构造函数引用比使用 lambda 更紧凑和可读,因此是首选。同样,空检查可以替换为对 Objects::isNull 和 Objects::nonNull 方法的引用。

我想将map(arg -&gt; arg.getValue()) 更改为map(T::getValue()),但它是不是编译错误()。

【问题讨论】:

    标签: java lambda java-8 sonarqube method-reference


    【解决方案1】:

    Lambda 应该替换为方法引用

    改变

    .map(arg -> arg.getValue())
    

    .map(Argument::getValue)
    

    至于:

    同样,空检查可以替换为对 Objects::isNull 和 Objects::nonNull 方法

    我以前没有使用过 Sonar,但如果它更喜欢使用 Objects.isNullObjects.nonNull 进行空检查,那么您需要这样做:

    return Objects.isNull(args) ? null : args.stream()
                    .map(Argument::getValue)
                    .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-10
      • 2021-09-19
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2019-05-10
      相关资源
      最近更新 更多