java - 通用类型的流图

标签 java lambda java-8 sonarqube method-reference

我想在 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());

Sonar 说:

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

我想将 map(arg -> arg.getValue()) 更改为 map(T::getValue()) 但编译错误吗 ().

最佳答案

Lambdas should be replaced with method references

改变

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

.map(Argument::getValue)

至于:

Similarly, null checks can be replaced with references to the Objects::isNull and Objects::nonNull methods

我以前没有使用过 Sonar,但如果它更喜欢使用 Objects.isNullObjects.nonNull 进行 null 检查,那么您需要执行以下操作:

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

关于java - 通用类型的流图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141765/

相关文章:

java - dockerfile 应该包含什么来运行一个简单的 CRUD Web 应用程序?

java - 如何使用 java 将最后 10 个最新文件保留在目录中?

c# - 从 Func<MyClass, object> 获取 "Object"返回类型

c# - Linq 查询对项目进行分组并从每个组中的顶部项目进行查询

checkbox - 为什么我无法在表格 View 中选择复选框?

java - 无法将我的 DefaultListModel 分配给 Java NetBeans 中的 JList

java - Android Java IOException 从文件描述符/输入流读取失败 EBADF(错误文件号)

java - 追加特定行 BufferedReader java

java - (Java 8) java.util.function.Supplier

java - 是否有更高效的 Java 8 Stream 方法来查找 int[] 中的索引?