publicstaticvoidmain(String[]args){// Example 1 : ConsumerConsumer<String>testFoo=(@NotBlankvartestString)->{System.out.println("s : "+testString);return;};testFoo.accept("1");// "s : 1" 이 출력된다.}
위 코드에서 testString 타입을 var 로 사용 한 이유는 @NotBlank 어노테이션을 사용 하기 위해서이다.
Primitive Consumer
1
2
3
4
5
6
7
8
9
publicstaticvoidmain(String[]args){// Example 2 : Primitive Consumer// IntConsumer 외에 DoubleConsumer, LongConsumer가 있다.IntConsumerintConsumer=n->{System.out.println(n*100);};intConsumer.accept(5);// 5 * 100 인 "500" 이 출력된다.intConsumer.accept(10);// 10 * 100 인 "1000" 이 출력된다.}
List.forEach()
1
2
3
4
5
6
publicstaticvoidmain(String[]args){// Example 3 : List.forEach()Consumer<String>consumer=s->System.out.println(s.toUpperCase());List<String>fruits=Arrays.asList("apple","kiwi","orange");fruits.forEach(consumer);}
andThen()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
publicstaticvoidmain(String[]args){// Example 4 : andThen()List<String>fruits=Arrays.asList("apple","kiwi","orange");Consumer<List<String>>addNumber=list->{for(inti=0;i<list.size();i++){list.set(i,(i+1)+". "+list.get(i));}};Consumer<List<String>>printList=list->{for(Stringfruit:list){System.out.println(fruit);}};addNumber.andThen(printList).accept(fruits);// fruits 의 요소들이 인덱스와 함께 줄바꿈되어 출력된다.}
1
2
3
4
5
6
7
8
// 실제로 andThen 은 아래와 같이 구성되어 있다.publicinterfaceConsumer<T>{...defaultConsumer<T>andThen(Consumer<?superT>after){Objects.requireNonNull(after);return(Tt)->{accept(t);after.accept(t);};}}
Leave a comment