在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())
,但这是错误的编译()。
答案 0 :(得分:3)
Lambda应替换为方法引用
更改
.map(arg -> arg.getValue())
到
.map(Argument::getValue)
至:
类似地,可以将空检查替换为对 Objects :: isNull和Objects :: nonNull方法
我以前没有使用过Sonar,但是如果它更喜欢使用Objects.isNull
和Objects.nonNull
进行空检查,那么您需要这样做:
return Objects.isNull(args) ? null : args.stream()
.map(Argument::getValue)
.collect(Collectors.toList());