通用类型的流图

时间:2019-09-27 22:05:24

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

在Java 8中创建新代码后,我希望清理声纳问题。

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

声纳说:

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

我想将map(arg -> arg.getValue())更改为map(T::getValue()),但这是错误的编译()。

1 个答案:

答案 0 :(得分:3)

  

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