ファンクショナルインターフェース
Suppiler 引数なし・戻り値あり。
getメソッドのみ定義されている。
プリミティブ型用にBooleanSupplier, IntSupplier, LongSupplier, DoubleSupplierが用意されている。
関数を変数のように扱える。
x
5
1
// Lambda式でパラメータが0個の場合は括弧を省略できない。
2
Supplier<Object> sp = () -> LocalDateTime.now().plusHours(-8);
3
System.out.println(sp.get()); //2019-07-06T07:03:53.413
4
Thread.sleep(10000); // 10秒間スリープ。
5
System.out.println(sp.get()); //2019-07-06T07:04:03.420
関数をパラメータのように渡せる。
1
7
1
public void doTest1() {
2
Supplier<String> mydate = () -> new SimpleDateFormat("yyyyねんMMがつddにちですよ").format(new Date());
3
doTest1Re(mydate);
4
}
5
public void doTest1Re(Supplier<String> mydate) {
6
System.out.println(mydate.get());
7
}
プリミティブ型での使用例。
1
11
11
1
BooleanSupplier csIsMonday = () -> Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY;
2
System.out.println(csIsMonday.getAsBoolean());
3
4
IntSupplier csYear = () -> Calendar.getInstance().get(Calendar.YEAR);
5
System.out.println(csYear.getAsInt());
6
7
LongSupplier csYearSquare = () -> Calendar.getInstance().get(Calendar.YEAR) * Calendar.getInstance().get(Calendar.YEAR);
8
System.out.println(csYearSquare.getAsLong());
9
10
DoubleSupplier csYearPI = () -> Calendar.getInstance().get(Calendar.YEAR) * Math.PI;
11
System.out.println(csYearPI.getAsDouble());
メソッド参照での使用例
1
2
1
Supplier<Object> cs = Instant::now;
2
System.out.println(cs.get());