做教程网站资源放哪里有展示型网站建设方案书
web/
2025/10/7 10:25:19/
文章来源:
做教程网站资源放哪里有,展示型网站建设方案书,淘客推广计划,wordpress 安全选项目录
1.简介
2.Optional类常用方法
3.示例代码
4.示例代码仓库地址 1.简介
Java 8引入了一个重要的新特性#xff0c;即Optional类。Optional类是为了解决空指针异常而设计的。
在Java中#xff0c;当我们尝试访问一个空对象的属性或调用其方法时#xff0c;很容易抛出…目录
1.简介
2.Optional类常用方法
3.示例代码
4.示例代码仓库地址 1.简介
Java 8引入了一个重要的新特性即Optional类。Optional类是为了解决空指针异常而设计的。
在Java中当我们尝试访问一个空对象的属性或调用其方法时很容易抛出NullPointerException。这种异常可能会导致程序崩溃或产生意外结果。
Optional类的目的是提供一种更好的处理空值的方式。它可以包含一个非空的对象也可以表示一个空值。使用Optional类我们可以避免直接操作空对象从而减少NullPointerException的发生。 2.Optional类常用方法
后面的示例代码主要用到map、orElse、ifPresent方法 1.map(Function? super T,? extends U mapper)如果Optional对象包含一个非空的值则将该值应用给定的函数进行转换并返回一个新的Optional对象用于存储转换后的结果否则返回一个空的Optional对象。 2.ofNullable(T value)如果value不为null则返回一个包含该value的Optional对象否则返回一个空的Optional对象。 3.isPresent()如果Optional对象包含一个非空的值则返回true否则返回false。 4.get()如果Optional对象包含一个非空的值则返回该值否则抛出NoSuchElementException异常。 5.orElse(T other)如果Optional对象包含一个非空的值则返回该值否则返回other。 6.ifPresent(Consumer? super T consumer)如果Optional对象包含一个非空的值则对该值执行给定的操作否则不做任何操作。 3.示例代码
我们来看一段代码
public static void main(String[] args) {User usernull;//模拟不确定的空对象Random random new Random();if(random.nextInt(11)5){user new User(Bob);}//把名字转成小写user.setName(user.getName().toLowerCase());System.out.println(user.getName());}
在这段代码中存在潜在的空指针异常风险。如果随机数小于等于5则 user 对象为 null调用 user.getName() 方法会导致空指针异常。
应该在调用 getName() 方法前先进行非空判断。 我们先看传统的手动判空处理 public static void main(String[] args) {User user null;// 模拟不确定的空对象Random random new Random();if (random.nextInt(11) 5) {user new User(Bob);}// 把名字转成小写if (user ! null user.getName() ! null) {user.setName(user.getName().toLowerCase());System.out.println(user.getName());} else {System.out.println(用户对象为空或用户名为空);}}
相较于这种传统的手动判空方法我们可以使用更优雅的方法Optional public static void main(String[] args) {User user null;// 模拟不确定的空对象Random random new Random();if (random.nextInt(11) 5) {user new User(Bob);}// 使用Optional类来包装空对象//Lambda表达式链式处理写法OptionalString optionalS1 Optional.ofNullable(user).map(u-u.getName()).map(name-name.toLowerCase());// 输出结果,若空则设置默认值为MiJiuSystem.out.println(optionalS1.orElse(MiJiu));//非空则输出结果optionalS1.ifPresent(s-System.out.println(s));System.out.println(--------------------------------);//用方法引用简化OptionalString optionalS2 Optional.ofNullable(user).map(User::getName).map(String::toLowerCase);System.out.println(optionalS2.orElse(MiJiu));optionalS1.ifPresent(System.out::println);}
有关什么是Lambda表达式可以看这篇
java基础之Java8新特性-Lambda-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135395534?spm1001.2014.3001.5502
有关什么是方法引用可以看这篇
java基础之Java8新特性-方法引入-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135469298?spm1001.2014.3001.5502
4.示例代码仓库地址
j8-new-feature: java8新特性示例Demo (gitee.com)编辑https://gitee.com/mi9688-wine/j8-new-featurehttps://gitee.com/mi9688-wine/j8-new-feature
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88418.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!