함수형 인터페이스 중 하나로 처리만 하고 결과를 돌려주지 않습니다.
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
- 제네릭 타입 T를 받아서 리턴값 없이(void) 실행하는 함수.
- "어떤 값을 받아서 소비(consume)한다" → 그래서 이름이 Consumer.
예를 들어, Consumer<String>은 문자열을 받아서 출력하는 함수가 될 수 있어요.
Consumer<String> printer = s -> System.out.println("입력: " + s);
printer.accept("Hello"); // 출력: 입력: Hello
트리 같은 자료구조에서 재귀 순회할 때, 각 노드를 방문할 때마다 실행할 동작을 외부에서 람다(함수)로 넘겨줄 수 있어요.
public void inorderRecursive(BinaryNode<T> node, Consumer<T> visit) {
if (node == null) return;
inorderRecursive(node.left, visit);
visit.accept(node.element); // 👉 여기서 Consumer 호출
inorderRecursive(node.right, visit);
}