【Java】Optionalの基礎1

java.util.Optionalは値をラップして、その値がnullかもしれないことを表現するクラス。
これによって、煩雑な記述を減らすことにより、プログラムの堅牢度を高める。

Optionalを使用する場面の想定はメソッドの戻り値

クラス間の結合度について

あるメソッドの戻り値として、nullが来る可能性がある場合、使用側はこれを知っている必要がある。
⇒知識を必要としており、多少なりともクラス間の結合度が密になる。
Optionalを使用することによって、ユーザはメソッドの戻り値としてnullが来る可能性があることが分かる。

例:定義側

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Optional;

public class MyOptional{
    private final ArrayList<String> LIST
        = new ArrayList<String>(Arrays.asList("Test", null, "Rest"));
    public Optional<String> getFromList(){
        var num = (int)(Math.rondom()*3);
        return Optional.ofNullable(this.LIST.get(num));
    }
}
例:呼び出し側

public class Exec{
    var myOpt = new MyOptional();
    // String str1 = myOpt.getFromList(); // error
    String str2 = myOpt.getFromList().orElse("NULL");
    var opt1 = myOpt.getFromList();
    Optional<String> opt2 = myOpt.getFromList();
}