Consumer

배고픈 징징이 ㅣ 2023. 2. 9. 17:39

1. 설명

Consumer<T> : 1개의 Type T 인자를 받고 리턴 값이 없는 함수형 인터페이스이다.

Consumer인 이유는 데이터를 사용만하고 아무것도 반환하지 않기 때문이다.

인터페이스 내부에는 Abstract Method인 accept()와 Default Method인 andThen() 이 존재한다.

 

2. Accept Method

  • accept 메소드는 제네릭 타입의 매개변수 하나만 받아 특정 작업을 수행한다.
  • 람다식(Lambda Expression)을 사용하여 Consumer Interface를 구현한다.

 

public class Test{
	public static void main(String[] args){
    	Consumer<String> consumer = string -> System.out.println(string);
        consumer.accept("Consumer Test"); // System.out.println("Consumer Test") 실행
    }
}

 

3. AndThen Method

  • andThen 메소드는 하나의 인자에 대해 Consumer를 연쇄적으로 이용하고 싶을때 사용하는 메소드이다.
  • Consumer를 인자로받아 Consumer를 반환한다.

 

public class Test{
	public static void main(String[] args){
    	Consumer<String> consumer1 = string -> System.out.println(string + " consumer1");
        Consumer<String> consumer2 = string -> System.out.println(string + " consumer2");
        consumer1.andThen(consumer2).accept("Consumer Test"); 
        /* 결과
        * Consumer Test consumer1
        * Consumer Test consumer2
        */
    }
}

---------------------------------------------------------------------------------------------

public class Test{
	public static void main(String[] args){
    	Consumer<String> consumer1 = string -> System.out.println(string + " consumer1");
        Consumer<String> consumer2 = string -> System.out.println(string + " consumer2");
        Consumer<String> union = consumer1.andThen(consumer2);
        union.accept("Consumer Test"); 
        /* 결과
        * Consumer Test consumer1
        * Consumer Test consumer2
        */
    }
}

 

3. 코드

JsonArray gson;

public void eachObject(Consumer<JObject> consumer) {
    gson.forEach(each -> {
        consumer.accept(new JObject((JsonObject) each));
    });
}

------------------------------------------------------------

Map<String, Table> tables = new HashMap<>();

private SchemaManager() {
    readFiles().eachObject(each -> {
        Table table = new Table(each);
        tables.put(table.getName(), table);
    });
}

 

반응형

'Java' 카테고리의 다른 글

Excel Download With POI  (0) 2023.03.21
Atomic  (0) 2023.02.27
Try-With-Resources  (0) 2023.02.09
Static & Singleton Pattern  (0) 2023.02.08
Access Modifier ( 접근 지정자 )  (0) 2023.02.08