当前位置: 首页 > 知识库问答 >
问题:

具有泛型类型的流映射

鲁彬炳
2023-03-14

在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更紧凑和可读性,因此是首选。同样,空检查可以替换为对Object::isNull和Object::nonNull方法的引用。

我想要更改映射(arg-

共有1个答案

周飞
2023-03-14

Lambda应该替换为方法引用

改变

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

.map(Argument::getValue)

至于:

类似地,可以用对Objects::isNull和Objects::nonNull方法的引用来替换null检查

我以前没有使用过声纳,但如果它更喜欢使用对象的话。isNull和对象。非null对于null检查,您需要执行以下操作:

return Objects.isNull(args) ? null : args.stream()
                .map(Argument::getValue)
                .collect(Collectors.toList());
 类似资料:
  • 我试图在一个方法中使用泛型,在这个方法中,我将一个json反序列化为pojo,这样它就可以返回任何对象类型。 这里我的代码: 问题是

  • 我正在尝试用来自spring WebFlux的WebClient制作一个客户端库。 服务器返回如下JSON所示的响应: 结果字段包含元素数组,这些元素可以根据使用的API而不同。 有关该API的更多信息,请参阅ServiceNow产品中的表API。 正如您在文档中所看到的,API路径如下所示:GET/now/table/{tableName},其中tableName可以是不同的值,tipology

  • 问题内容: 所以我有一张地图: 我会像这样添加元素: 我有如下通用方法: 现在,这段代码可以很好地工作,并且没有编译器问题: 但是,当我尝试这样做时: 编译器向我显示以下警告:类型安全:通用方法verifyType(String,Class)的未经检查的调用verifyType(String,Class) 这让我感到困惑…请帮助… 问题答案: 更改: 至 通过仅将类型声明为“ Class”,就失去

  • 问题内容: 目前,我在Java中遇到通用类问题。 我有这样的事情: 现在,我实例化了一个没有类型参数的类的对象,因为我对此没有兴趣或不知道。 问题是,尽管编译器不依赖于参数,但它不仅丢弃有关类型参数的信息,而且还丢弃有关集合(字符串)的类型的信息。 我是在做错什么,还是Java的限制?如果是这样,那为什么会有限制? 问题答案: 你做错了 如果您不知道T类型,则只需使用通配符: GenericCla

  • 介绍 针对 java.lang.reflect.Type 的工具类封装,最主要功能包括: 获取方法的参数和返回值类型(包括Type和Class) 获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型) 方法 首先我们定义一个类: public class TestClass { public List<String> getList(){ return new Arra

  • (沙盒) 获取此错误: 类型“number”不可分配给类型“T”“number”可分配给“T”类型的约束,但“T”可以用约束{}的不同子类型实例化。(2322)输入。ts(1,26):预期类型来自此签名的返回类型。 我希望typescript能够自动推断T为数字,然后直接使用它。为什么它在抱怨?写这样的东西的正确方法是什么?谢谢