Optional源码解析与实践( 二 )

  • System.out.println("optional2失败了");
  • }
  • try {
  • Optional<Integer> optional3 = Optional.ofNullable(value1);
  • System.out.println("optional3创建了");
  • }catch (Exception e){
  • System.out.println("optional3失败了");
  • }
  • try {
  • Optional<Integer> optional4 = Optional.of(value2);
  • System.out.println("optional4创建了");
  • }catch (Exception e){
  • System.out.println("optional4失败了");
  • }
  • try {
  • Optional<Integer> optional5 = Optional.ofNullable(value2);
  • System.out.println("optional5创建了");
  • }catch (Exception e){
  • System.out.println("optional5失败了");
  • }
  • }
  • 4)运行结果
    Optional源码解析与实践

    文章插图
    2.3.3 值获取方法1)源码
    1. public T get() {
    2. if (value =https://www.huyubaike.com/biancheng/= null) {
    3. throw new NoSuchElementException("No value present");
    4. }
    5. return value;
    6. }
    2)方法说明【Optional源码解析与实践】get(): 如果Optional不为空 , 则返回该Optional容器中的值 , 否则抛出NoSuchElementExceptio。
    3)测试代码
    1. public static void main(String[] args) {
    2. Integer value1 = null;
    3. Integer value2 = 1;
    4. Optional<Integer> optional1 = Optional.ofNullable(value1);
    5. Optional<Integer> optional2 = Optional.of(value2);
    6. try {
    7. Integer result=optional1.get();
    8. System.out.println("optional1的值是:"+result);
    9. }catch (Exception e){
    10. System.out.println("optional1的值获取失败,原因:"+e.getMessage());
    11. }
    12. try {
    13. Integer result=optional2.get();
    14. System.out.println("optional2的值是:"+result);
    15. }catch (Exception e){
    16. System.out.println("optional2的值获取失败,原因:"+e.getMessage());
    17. }
    18. }
    4)运行结果
    Optional源码解析与实践

    文章插图
    2.3.4 判断方法1)源码
    1. public boolean isPresent() {
    2. return value != null;
    3. }
    4. public void ifPresent(Consumer<? super T> consumer) {
    5. if (value != null)
    6. consumer.accept(value);
    7. }
    8. public T orElse(T other) {
    9. return value != null ? value : other;
    10. }
    11. public T orElseGet(Supplier<? extends T> other) {
    12. return value != null ? value : other.get();
    13. }
    14. public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
    15. if (value != null) {
    16. return value;
    17. } else {
    18. throw exceptionSupplier.get();
    19. }
    20. }
    2)方法说明