忍者ブログ

軽Lab

 Javaを中心とした、プログラミング関係のナレッジベース

Home > Java > Java 8の新機能(Optional)

Java 8の新機能(Optional)

Java 8 ではnullかもしれない値を表すOptionalクラスが導入された。例えば、SQLでString型の結果を取得した場合などは毎回if文でnullチェックしていたと思われるが、Optionalクラスを使うとnullの場合に空文字を返すなどの使い方が可能となる。

■ Optionalの使い方

 Optionalクラスは内部にジェネリクス型の値を持つ。基本的には値の設定と取得をするだけのクラスだが、値がnullの場合の関数が幾つかよういされている。Optionalクラスの主な関数は以下の通りである。

関数 内容
empty() 値がnullのOptionalインスタンスを作成する
ofNullable(T value) 値がvalueであるOptionalインスタンスを作成する
orElse(T other) Optionalインスタンスが保持する値を返す。値がnullの場合はotherを返す
orElseGet(Supplier other) Optionalインスタンスが保持する値を返す。値がnullの場合は引数で渡したSupplierインターフェースのget関数の戻り値を返す。
orElseThrow Optionalインスタンスが保持する値を返す。値がnullの場合は引数で渡したSupplierインターフェースのget関数の戻り値(Exception)の例外を発生させる。

■ サンプルコード

 以下にOptionalクラスを利用したサンプルコードを示す。

◇サンプルコード
package application;

import java.util.Optional;

public class TestOptional {

    public static void main(String[] args)
    {
        // Optional型の変数を作成
        Optional<String>    str1    = Optional.empty();
        Optional<String>    str2    = Optional.ofNullable( "文字列" );
        
        // Optional型の変数を取得(orElse)
        System.out.println( "str1は" + str1.orElse("null") + "です" );
        System.out.println( "str1は" + str2.orElse("null") + "です" );
        
        // Optional型の変数を取得(orElseGet)
        System.out.println( "str1.ofElseGetの例:" + str1.orElseGet( () -> str1.toString() ) );
        
        // Optional型の変数を取得(ofElseThrow)
        try{
            System.out.println( "str1.ofElseThrowの例:" + str1.orElseThrow( () -> new Exception("str1がnull") ) );
        }catch( Exception e ){
            System.out.println( e.getMessage() );
        }
    }

}
◇実行結果
str1はnullです
str1は文字列です
str1.ofElseGetの例:Optional.empty
str1がnull

■ 参照

  1. JavaDoc - クラスOptional
Home > Java > Java 8の新機能(Optional)

- ランダム記事 -
- PR -

コメント

プロフィール

管理者:
 連絡はContactよりお願いします。

PR