「Java8」OptionalクラスのorElseメソッドの使い方
環境
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.public T orElse(T other)
存在する場合は値を返し、それ以外の場合はotherを返します。
パラメータ: other – 存在する値がない場合に返される値、nullも可
Optionalに設定した値がnullでなければその値を、nullであればorElseで設定した値を取得します。
使用例
package com.arkgame.study; import java.util.HashMap; import java.util.Map; import java.util.Optional; public class OptionalDemo { private static final String strMsg = "検索の都市が存在しません"; @SuppressWarnings("serial") private static Map<String, String> cft = new HashMap<String, String>() { { put("101", "東京"); put("202", "大阪"); put("303", "福岡"); } }; // Optionalの宣言 public static Optional<String> getCityName(String uid) { if (cft.containsKey(uid)) { // nullでない値を設定 return Optional.of(cft.get(uid)); } else { // 値がnullの場合 return Optional.empty(); } } public static void main(String[] args) { // Optionalインスタンス生成 Optional<String> opA = getCityName("202"); // 存在しない場合に返される値 String nameA = opA.orElse(strMsg); System.out.println("実行結果1: " + nameA); Optional<String> opB = getCityName("302"); String nameB = opB.orElse(strMsg); System.out.println("実行結果2: " + nameB); } }
実行結果
実行結果1: 大阪 実行結果2: 検索の都市が存在しません