Java8-Optional

1.定义:

Optional是Java8提供的为了解决null安全问题的一个API。减少了我们进行判断空的程序.

2.相关的方法:

Modifier and TypeMethod and Description
static <T> Optional<T>empty()

返回一个空 Optional实例。

booleanequals(Object obj)

指示是否有其他对象“等于”此选项。

Optional<T>filter(Predicate<? super T> predicate)

如果一个值是存在的,而价值匹配给定谓词,返回一个 Optional描述值,否则返回一个空 Optional

<U> Optional<U>flatMap(Function<? super T,Optional<U>> mapper)

如果一个值是存在的,将提供 Optional-bearing映射函数,返回结果,否则返回一个空 Optional

Tget()

如果一个值是在这 Optional,返回值,否则将 NoSuchElementException

inthashCode()

返回当前值的哈希代码值,如果有的话,或0(0),如果没有价值。

voidifPresent(Consumer<? super T> consumer)

如果一个值存在,调用指定的值的指定的用户,否则什么都不做。

booleanisPresent()

返回 true如果有存在价值,否则 false

<U> Optional<U>map(Function<? super T,? extends U> mapper)

如果一个值是存在的,申请提供的映射函数,如果结果不为空,返回一个 Optional描述结果。

static <T> Optional<T>of(T value)

返回与指定非空值的 Optional目前。

static <T> Optional<T>ofNullable(T value)

返回一个 Optional描述指定的值,如果非零,则返回一个空 Optional

TorElse(T other)

如果目前的返回值,否则返回 other

TorElseGet(Supplier<? extends T> other)

如果目前的返回值,否则调用 other并返回调用结果的。

<X extends Throwable>
T
orElseThrow(Supplier<? extends X> exceptionSupplier)

返回所包含的值,如果存在的话,否则抛出一个由提供的供应商创建的异常。

StringtoString()

返回此可选适用于调试的非空字符串表示形式。

3.相关的案例

3.1创建一个空的Optional.

//1.创建空的optional
Optionaloptional=Optional.empty();
//Optional.empty

System.out.println("1.创建空的optional:\n"+optional.get());
//使用get方法进行输出为NoSuchElementException

3.2使用Optional的of() 方法

先创建一个对象类Optiona_User.java

importlombok.AllArgsConstructor;
importlombok.Data;

@Data
@AllArgsConstructor
publicclassOptional_User{
	privateintuid;
	privateStringname;
	privateintage;
}

测试调用及结果

demo02(user);//正常输出user
demo02(null);//NullPointerException

3.3使用Optional的ofNullable()方法进行测试

public static  void demo03(Optional_User user){
        Optional<Optional_User> userB = Optional.ofNullable(user);
        System.out.println("3.使用optional.ofNullable()->:\n"+userB.get());
    }

测试调用及结果

public static  void demo03(Optional_User user){
        Optional<Optional_User> userB = Optional.ofNullable(user);
        System.out.println("3.使用optional.ofNullable()->:\n"+userB.get());
    }

3.4 使用ifPresent()检查是否含有值

  public static void demo04(Optional_User user) {
        Optional<Optional_User> userC = Optional.ofNullable(user);
        System.out.println(userC.isPresent());
    }

测试结果:

//4.demo04 是判断是否为空
demo04(user);//true
demo04(null);//false

3.5使用OrElse(other) 进行替换空值,使用orElseGet(()->other)效果一样

public  static void demo05(Optional_User user) {
	Optional_User user2 = new Optional_User(1,"superl2",22);
	Optional_User userD = Optional.ofNullable(user).orElse(user2);
	System.out.println("5.1使用orElse(other)->:\n"+userD);
	//相当于
	Optional_User userD_1 = Optional.ofNullable(user).orElseGet(() -> user2);
	System.out.println("5.2 相当于使用orElseGet(()-> other)->:\n"+userD_1);
}

 测试结果:

//5.demo05 使用orElse()的方法进行替换null值
demo05(user);//打印出user
demo05(null);//打印user2

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值