JAVA

[JAVA] 익명 함수(Anonymous Function)와 람다 표현식

yebin0322 2025. 2. 3. 16:59
반응형

Anonymous Function

  • 이름이 없는 함수
  • 주로 람다식으로 표현됨
  • 일회성으로 사용되는 경우가 많음 -> 메모리 관리에 효과적
  • 코드의 간결성을 높이고, 특정 함수의 구현을 간단하게 표현할 수 있게 해줌

특징

  1. 이름 없음 : 직접적으로 호출할 수 없음. 변수에 할당하거나 다른 함수의 인자로 전달하여 사용
  2. 간결함 : 함수의 정의를 간단하게 작성할 수 있어 코드가 더 깔끔해짐
  3. 일회성 사용 : 주로 특정한 작업을 위해 한 번만 사용되는 경우가 많아, 별도의 메소드로 정의할 필요가 없을 때 유용
  4. 상태 캡슐화 : 정의된 위치의 변수를 캡슐화하여 사용할 수 있음. 클로저(Closure)와 같은 개념 활용 가능

1. 익명 함수를 사용하지 않은 경우

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // 익명 함수를 사용하지 않으면 메소드로 구현해야 함
        printNames(names);
    }

    public static void printNames(List<String> names) {
        for (String name : names) {
            System.out.println(name);
        }
    }
}

2. 익명 함수를 사용하는 경우

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // 익명 함수(람다 표현식) 사용
        names.forEach(name -> System.out.println(name));
    }
}
  • name -> System.out.println(name)부분이 익명함수(forEach의 메소드의 인자로 사용되는 부분이 익명함수인 것)
  • name : 매개변수(forEach 메소드가 names 리스트의 각 요소를 이 매개변수로 전달하는 것)
  • -> : 람다 연산자. 왼쪽이 매개변수, 오른쪽이 실행할 코드 블럭
  • System.out.println(name) : 실행할 코드 블럭
반응형