Android Optional使用

本文介绍了Java 8中的Optional类如何用于解决Android开发中的null安全问题,通过示例展示了Optional的创建、常用方法及其优雅的链式调用,强调了正确使用Optional以提高代码可读性和避免冗余的null检查。
摘要由CSDN通过智能技术生成

1.Optional
Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使代码中很多繁琐、丑陋的设计变得十分优雅。
java8之所以要提出这个对象,是因为java8中主要引入了lambda表达式,这种函数式编程中大量的链式调用,如果用原始的方法去判断nullpointException,会破坏lambda这种风格。

比如在Android开发中,接口json中,对象里面有对象,对象中有属性。每次使用或作为参数传参时,都要!=null非空判断。一个还好,当属性嵌套得非常深的时候,就会出现以下代码。
public class Person {
private int age;
private String name;
private Address address;

public Person(int age, String name, Address address) {
this.age = age;
this.name = name;
this.address = address;
}

//…省略set、get方法

public static class Address {
private String roomNum;
private String areaNum;
public Address(String roomNum, String areaNum) {
this.roomNum = roomNum;
this.areaNum = areaNum;
}
//…省略set、get方法
}
}

//错误码
String errorNum = “error”;
if (barry.getAddress() != null
&& barry.getAddress().getAreaNum() != null
&& !barry.getAddress().getAreaNum().equals(errorNum)) {
String areaNum = barry.getAddress().getAreaNum();
//最后使用areaNum属性做事情
System.out.println("areaNum = " + areaNum);
}
总之,就是不好看,臃肿,也不优雅。

Java8中,为了解决以上问题,引入了Optional类。Optional是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

2.Optional中的方法
①创建Optional
Optional有三个静态构造方法:
(1) Optional.of(T value)
public static < T> Optional< T> of(T value) {
return new Optional<>(value);
}
该方法通过一个非 null 的 value 来构造一个 Optional,返回的 Optional 包含了 value 这个值。对于该方法,传入的参数一定不能为 null,否则便会抛出 NullPointerException。

举例:
Optional< String> op1 = Optional.of(“Hello”);
System.out.println(op1.isPresent()); // 输出 true
System.out.println(op1.get()); // 输出 Hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值