Unchecked assignment 错误解决办法

14 篇文章 1 订阅

下面一段程序编译 return new PagingModel(); 提示警告:Unchecked assignment 

    public PagingModel<GasProductResponse> getProductList(SaleProductListVo vo) {
        log.info("[GasProductServiceImpl --> getProductList] - param: {}", JSON.toJSONString(vo));
        try {
            List<CodeDict> codeDictList = getRiskList();
            List<String> largeTypes;
            // 获取全部的险种
            if (CollectionUtils.isEmpty(codeDictList)) {
                largeTypes = new ArrayList<>();
            } else {
                largeTypes = codeDictList.stream()
                        .map(CodeDict::getCode)
                        .collect(Collectors.toList());
            }
            PagingModel<GasProductResponse> pages = Pages.query(vo, () -> productInfoMapper.getSaleProd(vo, largeTypes));
            if (pages.getTotal() == 0) {
                return new PagingModel();
            }

Java的泛型设计是为了提供编译时的类型安全。当创建一个泛型类的实例,但没有提供具体的类型参数时,编译器会给出一个警告,告诉这样做可能会导致类型安全问题。在代码中,当写return new PagingModel();时,你没有指定PagingModel应该持有的具体类型,这就是编译器警告的原因。

要解决这个问题,需要在创建PagingModel的实例时提供一个具体的类型参数。在上面的例子中,这个类型参数应该是GasProductResponse。所以,修改代码为:

return new PagingModel<GasProductResponse>(); 

又提示新的警告:

eplace the type specification in this constructor call with the diamond operator ("<>").

这个新的警告是关于Java 7及更高版本中引入的“钻石操作符”(diamond operator)。钻石操作符<>允许编译器推断泛型实例的类型参数,这样你就不需要在构造器调用中显式地重复这些参数了。

在上面的代码中,当你使用new PagingModel<GasProductResponse>(),实际上没有必要在构造器调用中指定<GasProductResponse>,因为编译器可以从方法返回类型PagingModel<GasProductResponse>推断出来。所以,编译器建议你使用钻石操作符来简化代码,如下所示:

return new PagingModel<>();

这样,编译器会自动推断出new PagingModel<>()应该是new PagingModel<GasProductResponse>()的简写。这不仅减少了代码冗余,还保持了类型安全。

警告消除。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值