你的位置:首页 > 软件开发 > Java > Guava:Optional使用null

Guava:Optional使用null

发布时间:2015-11-09 17:00:56
Guava的Optional:  大多数情况下程序员使用null是为了表示某种不存在的意思,也许应该有一个value,但是这个value是空或者这个value找不到。比方说,在用不存在的key值从map中取  value,Map.get返回null表示没有该map中不包含这个ke ...

Guava的Optional:

  大多数情况下程序员使用null是为了表示某种不存在的意思,也许应该有一个value,但是这个value是空或者这个value找不到。比方说,在用不存在的key值从map中取  value,Map.get返回null表示没有该map中不包含这个key。 

  若T类型数据可以为null,Optional<T>是用来以非空值替代T数据类型的一种方法。一个Optional对象可以包含一个非空的T引用(这种情况下我们称之为“存在的”)或者不包含任何东西(这种情况下我们称之为“空缺的”)。但Optional从来不会包含对null值的引用。

Guava:Optional使用null  Optional<T>的最常用价值在于,例如,假设一个方法返回某一个数据类型,调用这个方法的代码来根据这个方法的返回值来做下一步的动作,若该方法可以返回一个null值表示成功,或者表示失败,在这里看来都是意义含糊的,所以使用Optional<T>作为返回值,则后续代码可以通过isPresent()来判断是否返回了期望的值(原本期望返回null或者返回不为null,其意义不清晰),并且可以使用get()来获得实际的返回值。


  Optional方法说明和使用实例:

  1.常用静态方法:

  Optional.of(T):获得一个Optional对象,其内部包含了一个非null的T数据类型实例,若T=null,则立刻报错。

import com.google.common.base.Optional;public class OptionalTest {    @Test  public void testOptional() throws Exception {     Optional<Integer> possible=Optional.of(6);    Optional<Integer> absentOpt=Optional.absent();    Optional<Integer> NullableOpt=Optional.fromNullable(null);    Optional<Integer> NoNullableOpt=Optional.fromNullable(10);    if(possible.isPresent()){      System.out.println("possible isPresent:"+possible.isPresent());      System.out.println("possible value:"+possible.get());    }    if(absentOpt.isPresent()){      System.out.println("absentOpt isPresent:"+absentOpt.isPresent()); ;    }    if(NullableOpt.isPresent()){      System.out.println("fromNullableOpt isPresent:"+NullableOpt.isPresent()); ;    }    if(NoNullableOpt.isPresent()){      System.out.println("NoNullableOpt isPresent:"+NoNullableOpt.isPresent()); ;    }  } }
Guava:Optional使用null

  2.实例方法:

  1>. boolean isPresent():如果Optional包含的T实例不为null,则返回true;若T实例为null,返回false

import java.util.Set;import com.google.common.base.Optional;public class OptionalTest {    public void testMethodReturn() {    Optional<Long> value = method();    if(value.isPresent()==true){      System.out.println("获得返回值: " + value.get());       }else{              System.out.println("获得返回值: " + value.or(-12L));      }        System.out.println("获得返回值 orNull: " + value.orNull());        Optional<Long> valueNoNull = methodNoNull();    if(valueNoNull.isPresent()==true){      Set<Long> set=valueNoNull.asSet();      System.out.println("获得返回值 set 的 size : " + set.size());        System.out.println("获得返回值: " + valueNoNull.get());       }else{      System.out.println("获得返回值: " + valueNoNull.or(-12L));      }        System.out.println("获得返回值 orNull: " + valueNoNull.orNull());  }  private Optional<Long> method() {    return Optional.fromNullable(null);  }  private Optional<Long> methodNoNull() {    return Optional.fromNullable(15L);  }  }
Guava:Optional使用null

  输出结果:

获得返回值: -12获得返回值 orNull: null获得返回值 set 的 size : 1获得返回值: 15获得返回值 orNull: 15

原标题:Guava:Optional使用null

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录