Java : Consumer - API使用例
Consumer (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
概要
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));
}
};
System.out.println("-- forEach --");
stream.forEach(action);
// 結果
// ↓
//-- forEach --
//AAA
//BBB
//CCC
// ラムダ式の例です。
final var stream = Stream.of("a", "b", "c");
System.out.println("-- forEach --");
stream.forEach(s -> {
System.out.println(s.toUpperCase().repeat(3));
});
// 結果
// ↓
//-- forEach --
//AAA
//BBB
//CCC
メソッド
void accept (T t)
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));
}
};
System.out.println("-- forEach --");
stream.forEach(action);
// 結果
// ↓
//-- forEach --
//AAA
//BBB
//CCC
// ラムダ式の例です。
final var stream = Stream.of("a", "b", "c");
System.out.println("-- forEach --");
stream.forEach(s -> {
System.out.println(s.toUpperCase().repeat(3));
});
// 結果
// ↓
//-- forEach --
//AAA
//BBB
//CCC
default Consumer<T> andThen (Consumer<? super T> after)
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);
System.out.println("-- accept --");
consumer2.accept("abcd");
// 結果
// ↓
//-- accept --
//abcd
//ABCD
final var consumer1 = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(" consumer1 accept!");
if (s == null) {
throw new IllegalArgumentException("s is null");
}
}
};
final var after = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(" after accept!");
}
};
final var consumer2 = consumer1.andThen(after);
try {
System.out.println("-- accept null --");
consumer2.accept(null);
} catch (IllegalArgumentException e) {
System.out.println("IllegalArgumentException! : " + e.getMessage());
}
// 結果
// ↓
//-- accept null --
// consumer1 accept!
//IllegalArgumentException! : s is null
関連記事
- API 使用例
- @FunctionalInterface
- BiConsumer
- BiFunction
- BiPredicate
- BooleanSupplier
- Comparator (比較)
- DoubleConsumer
- DoubleFunction
- DoublePredicate
- DoubleSupplier
- Function
- IntConsumer
- IntFunction
- IntPredicate
- IntSupplier
- LongConsumer
- LongFunction
- LongPredicate
- LongSupplier
- Predicate
- Runnable
- Supplier
- ToIntFunction