首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

使用Optional摆脱NPE的折磨

如果一个接口返回Optional,可以表示一个人可能有车也可能没有车,这个比简单的返回Car要更明确,阅读代码的人不需要提前准备业务知识。...Optional的使用 方法 描述 empty 返回一个Optional实例 filter 如果值存在并且满足提供的过滤条件,返回包含该值的Optional对象;否则就返回一个Optional...对象 ifPresent 如果值存在,就执行使用该值的方法调用,否则什么也不做 of 将指定值用Optional封装之后返回如果该值null,抛出一个NPE ofNullable 将指定值用Optional...封装之后返回如果该值null,返回一个Optional对象 orElse 如果有值返回,否则返回一个默认值 orElseGet 如果有值返回,否则返回一个由指定的Supplier接口生成的值...(如果默认值的生成代价比较高的话,适合使用orElseGet方法) orElseThrow 如果有值返回,否则返回一个由指定的Supplier接口抛出的异常 get 如果值存在,返回该值,否则抛出一个

50830

Java8 Optional用法和最佳实践

其它角度看,Optional提供一种类型级解决方案来表示可选值而不是引用。## 在Optional之前在Java 8之前,程序员将返回null而不是Optional。这种方法有一些缺点。...不过,这样做可能很有诱惑力,如果对象,请避免与Option.empty()返回的实例的{==}比较 。因为不能保证它是一个单例,反之,应该使用isPresent()。...#### 返回描述指定值的Optional如果返回空值```// Possible null value Optional optional = Optional.ofNullable...name : null; }```### 常用API#### ifPresent()如果存在值,返回true;反之,返回false。如果所包含的对象不为null,返回true,反之返回false。...具体到我们的场景,使用orElse的时候,每次它都会执行计算结果的过程,而对于orElseGet,只有Optional中的值时,它才会计算备选结果。这样做的好处是可以避免提前计算结果的风险。

95530

定义一个方法,功能是找出一个数组中第一个只重复出现2次的元素,没有返回null。例如:数组元素 ,重复两次的元素4和2,但是元素4排在2的前面,结果返回

在本篇博客中,我们将探讨如何实现一个方法,该方法能够在给定的整数数组中,找出第一个仅重复出现两次的元素。如果数组中不存在这样的元素,方法返回null。...定义一个方法,功能是找出一个数组中第一个只重复出现2次的元素,没有返回null。...例如:数组元素 [1,3,4,2,6,3,4,2,3],重复两次的元素4和2,但是元素4排在2的前面,结果返回4。...如果某个元素的出现次数2,我们将该元素的值赋给value,然后跳出循环。 最终,我们输出value的值,即数组中第一个仅重复出现两次的元素。...这个方法的实现充分利用了LinkedHashMap的特性来保持元素的插入顺序,从而使我们能够找到符合条件的第一个元素。如果数组中不存在符合条件的元素,value将保持0,表示未找到。

16510

= obj 判,10招让你彻底告别指针异常!

= 0; 当方法返回值的时候,非必要的情况下,尽量不要返回null; 比如一个方法的执行最终返回的是List,当List没有值的时候,可以不返回null对象,而是可以返回一个的List public...(o1); Optional.of() 当对象null时,创建过程就会抛出NPE异常 Optional.ofNullable() 当对象null时,也能正常返回 Optional 对象 判 isPresent...异常 Integer integer = op2.get(); // 取出原值,如果原值返回指点的默认值 Integer integer1 = op1.orElse(456); // 取出原值,...如果原值返回默认值,不过在返回之前还需要做一些其他的事情 Integer integer2 = op2.orElseGet(() -> { // 在这里做一些其他的操作 return...null,如果不为的时候,就会报错;notNull表示期望对象不为,当对象时,就会报错; 8局部变量使用基本数据类型 在之前的文章《阿里为何禁止在对象中使用基本数据类型》中,性能的角度,推荐局部变量的定义尽量使用基本数据类型

53020

Java基础教程(17)-Java8中的lambda表达式和Stream、Optional

Optional实例方法:isPresent():判断optional是否如果返回false,否则返回trueifPresent(Consumer c):如果optional不为,则将optional...中的对象传给Comsumer函数orElse(T other):如果optional不为返回optional中的对象;如果null,返回 other 这个默认值orElseGet(Supplier...other):如果optional不为返回optional中的对象;如果null,使用Supplier函数生成默认值otherorElseThrow(Supplier exception):...如果optional不为返回optional中的对象;如果null,抛出Supplier函数生成的异常filter(Predicate p):filter() 接受一个 Predicate 参数...如果测试结果 false,会返回一个Optional

7510

Java8新特性探索之Optional

我们首先要判断这个返回值是否null,只有在非的前提下才能将其作为其他方法的参数。...Optional对象,如果指定的值null,创建一个Optional对象 get 如果创建的Optional中有值存在,返回此值,否则抛出NoSuchElementException isPresent...如果创建的Optional中的值存在,返回true,否则返回false ifPresent 如果创建的Optional中的值存在,执行该方法的调用,否则什么也不做 orElse 如果创建的Optional...中有值存在,返回此值,否则返回一个默认值 orElseGet 如果创建的Optional中有值存在,返回此值,否则返回一个由Supplier接口生成的值 empty 创建一个Optional对象...filter()接受一个Predicate参数,返回测试结果 true 的值。如果测试结果 false,会返回一个Optional

49320

让代码变得优雅简洁的神器:Java8 Stream流式编程

3.7.1、findFirst findFirst用于返回流中第一个元素,如果空话,返回一个Optional对象—— 假设需要对一批同手机号的黑名单用户按照时间戳降序排序,然后取出第一个即时间戳最早的用户...,如果通过Optional对象返回一个null。...:Optional对象 5.2.2、get()方法 获取Optional对象中的值,如果对象抛出NoSuchElementException异常—— String str = null...方法 获取Optional对象中的值,如果对象返回指定的默认值—— String str = null; Optional optStr = Optional.ofNullable...("Optional对象返回默认值:" + optStr.orElse("null")); } ​ ​ 打印结果:Optional对象返回默认值:null 当然,如果不为的话,

4.1K10

了解、接受和利用Java中的Optional (类)

简化这一过程,我们将使用 Optional 类取代上述代码,创建和验证一个实例开始,再到使用其提供的不同方法,最后将其和返回相同类型的其他方法进行组合,而最后这项组合功能正是 Optional 的真正强大之处...接下来,我们看看能够替换值的各种方法返回默认值 Optional 类提供了一些 API,用于返回对象值或在对象返回默认值。...在本例中,如果存在值,方法回返该值,如果不存在,其执行 Supplier 函数接口(作为其收到的一个参数),并返回执行结果: User result = Optional.ofNullable(user...filter() 方法将 predicate 作为参数,当测试评估真时,返回实际值。否则,当测试假时,返回值则为 Optional。...如果 Optional 不存在值, Stream 如果 Optional 包含一个非 null 值, Stream 会包含单个值。

1.2K60

代码优雅之道——Java如何判

常见的方法有:.empty():创建一个Optional实例.of(T t) : 创建一个Optional 实例,null时报异常.ofNullable(T t):若t 不为null,创建Optional...,若容器返回括号中的默认值orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回s 获取的值orElseThrow() :如果,就抛出定义的异常,如果不为返回当前对象...map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()flatMap(Function mapper):与map 类似,要求返回值必须是...OptionalT get() :获取容器中的元素,若容器抛出NoSuchElement异常先看个常见的示例:baseInfo类中有布尔类型的属性,是返回false,不为取其值,需要四行。...(T value) { return new Optional(value); } //这个静态方法大致是 如果参数value创建对象,如果不为创建有参对象

1.7K20
领券