■
引き続きjava8でも(´・ω・`)
java8で導入されたOptionalをちょっと試す。
public class Sample { public static void main(String[] args) { // 値が設定されているオプショナル Optional<String> o = Optional.of("test"); // 値取得の場合は、nullチェックが必要 if (o.isPresent()) { System.out.println(o.get()); } // クロージャで o.ifPresent(s -> System.out.println(s)); // 空のオプショナル Optional<Object> empty = Optional.empty(); // デフォルト値 System.out.println(empty.orElse("デフォルト")); // クロージャで System.out.println(empty.orElseGet(() -> "デフォルト")); try { // 例外をthrow System.out.println(empty.orElseThrow(() -> new Exception("例外"))); } catch (Exception ex) { Logger.getLogger(Sample.class.getName()).log(Level.SEVERE, null, ex); } // モナド Optional.ofNullable("java").map(st -> st.toUpperCase()).ifPresent(st -> System.out.println("s:" + st)); String res = Optional.ofNullable((String) null).map(st -> st.toUpperCase()).orElse("s:null"); System.out.println(res); } }