栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java8中空指针问题解决 java ava.util.NoSuchElementException: No value present

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java8中空指针问题解决 java ava.util.NoSuchElementException: No value present

Java8中空指针问题解决 别提了,正在划水的我,突然被领导丢一个日志截图 No value present

咱这专业划水运动员哪里见过这问题呀,赶紧需要亲娘(度娘娘)帮助,查了下资料,再次排查了一下代码。又是一个忍不住口吐芬芳的时刻(嗯,是个狠人)…, 接下来就是见证奇迹的时刻…

optional 类

从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。

时刻

然而我们在使用 Optional 类之前就需要判读 Optional 是否为空,如果这个为空 就会报错 java ava.util.NoSuchElementException: No value present

曾经我出现的问题编写成案例 新建一个实体
 public OrderItem(Comparator comparator) {
 
    private String id;
    private String goodsName;
    private Integer goodsNuber;

   //无参构造方法
    public OrderItem() {
    }
    //构造方法
    public OrderItem(String id, String goodsName, Integer goodsNuber) {
        this.id = id;
        this.goodsName = goodsName;
        this.goodsNuber = goodsNuber;
    }
}

方法引用
 public void goodsOrder() {
     //放入几个参数
    ArrayList orderList = new ArrayList<>();
        orderList.add(new OrderItem("1", "苹果", null));
        orderList.add(new OrderItem("1", "苹果", null));
        orderList.add(new OrderItem("2", "香蕉", null));

   //求取GoodsNuber的最大值   -->此时这个方法就会抛出异常
        Integer goodsNuber12 = orderList.stream().filter(e -> e.getGoodsNuber() != null).max(Comparator.comparing(OrderItem::getGoodsNuber)).get().getGoodsNuber();
}
控制台输出
java.util.NoSuchElementException: No value present
	at java.util.Optional.get(Optional.java:135)
解析报错
//错误点就是   get() 这里,  因为 Optional为null,再get值肯定报错
        Optional item =orderList.stream().filter(e -> e.getGoodsNuber() != null).max(Comparator.comparing(OrderItem ::getGoodsNuber));

如何解决 使用此方法 isPresent();为了判断查询的类对象是否存在,这里我用正则判断
        Optional item =orderList.stream().filter(e -> e.getGoodsNuber() != null).max(Comparator.comparing(OrderItem ::getGoodsNuber));
        Integer goodsNuber1 = item.isPresent()? tem1.get().getGoodsNuber() : null;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842011.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号