「Java8」Optionalクラスのofとemptyメソッドでnullの可能性のある値を設定する

環境
JavaSE 1.8
Eclipse 4.14.0

構文
1.public static <T> Optional<T> of(T value)
指定された非null値を含むOptionalを返します。
パラメータ:
value – 存在する値、非nullである必要がある
戻り値:
存在する値でのOptional
2.public static <T> Optional<T> empty()
空のOptionalインスタンスを返します。このOptionalの値は存在しません。
3.get()
このOptionalに値が存在する場合は値を返し、それ以外の場合はNoSuchElementExceptionをスローします。
ofは、nullでない値を設定します。 値が null の場合は、NullPointerExceptionがスローされます。
emptyは、値としてnullを設定します。

使用例

package com.arkgame.study;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class OptionalDemo {

      @SuppressWarnings("serial")
      private static Map<String, String> users = new HashMap<String, String>() {
            {
                  put("101", "東京");
                  put("202", "大阪");
                  put("303", "福岡");
            }
      };

      // Optionalの宣言
      public static Optional<String> getCityName(String uid) {
            if (users.containsKey(uid)) {
                  // nullでない値を設定
                  return Optional.of(users.get(uid));
            } else {
                  // 値がnullの場合
                  return Optional.empty();
            }
      }

      public static void main(String[] args) {
            // Optionalインスタンス生成
            Optional<String> opA = getCityName("202");
            // Optionalに値が存在する場合は値を返す
            String city = opA.get();
            System.out.println("都市名: " + city);
            
            System.out.println("****************");
            Optional<String> opB = getCityName("222");
            // Optionalに値が存在する場合は値を返す
            String cityB = opB.get();
            System.out.println("都市名: " + cityB);
            

      }
}

実行結果

都市名: 大阪
****************
Exception in thread "main" java.util.NoSuchElementException: No value present
      at java.util.Optional.get(Optional.java:135)
      at com.arkgame.study.OptionalDemo.main(OptionalDemo.java:38)

 

Java

Posted by arkgame