Java : Consumer - API使用例
Consumer (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
単一の入力引数を受け取って結果を返さないオペレーションを表します。 Consumerは他のほとんどの関数型インタフェースと異なり、副作用を介して動作することを期待されます。
Consumer は、パラメータあり、戻り値なしの関数型インタフェースです。
主に、Stream や Optional のラムダ式として使われます。
final var stream = Stream.of("a", "b", "c");
final var action = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s.toUpperCase().repeat(3));
}
};
// AAA
// BBB
// CCC
stream.forEach(action);
// ラムダ式の例です。
final var stream = Stream.of("a", "b", "c");
// AAA
// BBB
// CCC
stream.forEach(s -> System.out.println(s.toUpperCase().repeat(3)));
メソッド
void accept (T t)
指定された引数でこのオペレーションを実行します。
final var consumer = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s.toUpperCase());
}
};
consumer.accept("abcd"); // ABCD
final var consumer = new Consumer<LocalDate>() {
@Override
public void accept(LocalDate date) {
System.out.println(date);
}
};
consumer.accept(LocalDate.of(1999, 1, 1)); // 1999-01-01
// ラムダ式として使う例です。
final var list = List.of("AAA", "BBB", "CCC");
System.out.println(list); // [AAA, BBB, CCC]
// aaa
// bbb
// ccc
list.forEach(s -> System.out.println(s.toLowerCase()));
default Consumer<T> andThen (Consumer<? super T> after)
このオペレーションを実行した後、続けてafterオペレーションを実行する合成Consumerを返します。
final var consumer1 = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
final var after = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s.toUpperCase());
}
};
final var consumer2 = consumer1.andThen(after);
// abcd
// ABCD
consumer2.accept("abcd");
final var consumer1 = new Consumer<String>() {
@Override
public void accept(String s) {
if (s == null) {
throw new IllegalArgumentException("s is null");
}
System.out.println("accept : " + s);
}
};
final var after = new Consumer<String>() {
@Override
public void accept(String s) {
// ★ここは実行されません。
System.out.println("after : " + s);
}
};
final var consumer2 = consumer1.andThen(after);
consumer2.accept(null);
// 結果
// ↓
// java.lang.IllegalArgumentException: s is null