Guava学习(一):Optional

本文探讨Guava库中的Optional对象及其主要方法,同时提到Java 8内置的Optional,指出两者相似性,建议在Java 8环境下可直接使用Java内置的Optional。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Guava学习(一):Optional

Optional对象中的主要方法如下:
Optional方法描述
例子:

package com.bluedragon.guavalearning.optional;

import com.google.common.base.Optional;

/**
 * @author CodeRush
 * @date 2019/7/27 20:39
 */
public class OptionalTest {

    public static void main(String[] args) {
        //Optional.of(T) ) 创建指定引用的Optional实例, 若引用为null则快速失败 optional:可选的
        Optional<Integer> possible = Optional.of(5);
        //present:存在
        System.out.println(possible.isPresent());  //true
        //返回Optional所包含的引用, 若引用缺失, 则抛出java.lang.IllegalStateException
        System.out.println(possible.get()); //5
        //含有默认值的返回,如果为null返回or中的值,否则直接返回引用值
        System.out.println(possible.or(1)); //5
        //Set<T> asSet()) 返回Optional所包含引用的单例不可变集, 如果引用存在, 返回一个只有单一元素的集合,
        // 如果引用缺失, 返回一个空集合。
        System.out.println(possible.asSet()); //[5]

        try {
            Optional<Object> nullOptionalOf = Optional.of(null); //of接收到null会快速失败
        } catch (Exception e) {
            System.out.println("引用为null则快速失败,Optional.of快速失败率,不会创建成功");
            e.printStackTrace();
        }

        //Optional.absent()) 创建引用缺失的Optional实例 absent:不存在
        Optional<Object> nullOptional = Optional.absent();
        System.out.println(nullOptional.isPresent()); //false
        System.out.println(nullOptional.or("值为null")); //值为null
        System.out.println(nullOptional.orNull());//null
        System.out.println(nullOptional.asSet()); //[]

        //Optional.fromNullable(T)) 创建指定引用的Optional实例, 若引用为null则表示缺失
        Optional<Object> nullableOptional = Optional.fromNullable(null); //从允许null的对象生成
        try {
            System.out.println(nullableOptional.get()); //为null的话get方法就会抛出异常,可以使用orNull或者or(null)
        } catch (Exception e) {
            System.out.println("get到null值抛出异常");
            e.printStackTrace();
        }
   	}
   	
}

到了java8的时候,jdk中已经将Optional集成进来了,使用方法基本都类似,所以使用java8的话,可以不用guava的Optional了,后面要说的Ordering也一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值