SeouliteLab

[Java/자바] 익명 함수에서 상수 및 변수 참조 본문

프로그래밍

[Java/자바] 익명 함수에서 상수 및 변수 참조

Seoulite Lab 2024. 3. 19. 09:58

Java에서 익명 함수(람다식)을 사용할 때, 외부에 있는 상수 및 변수를 참조하는 방법에 대해 알아봅니다. 외부의 상수 및 변수를 참조할 때에는 몇 가지 주의할 점이 있습니다.

1. 상수 및 변수 참조 예제

예제 1: 외부 변수 참조

람다식에서 외부에 있는 변수를 참조하는 예제입니다.

 


// LambdaExample1.java

public class LambdaExample1 {
    static int staticVar = 10;

    public static void main(String[] args) {
        int localVar = 20;

        MyFunctionalInterface1 obj = () -> {
            System.out.println("Static variable: " + staticVar);
            System.out.println("Local variable: " + localVar); // 오류 발생
        };

        obj.myMethod();
    }
}

@FunctionalInterface
interface MyFunctionalInterface1 {
    void myMethod();
}

예제 2: 상수 참조

람다식에서 외부에 있는 상수를 참조하는 예제입니다.


// LambdaExample2.java

public class LambdaExample2 {
    public static void main(String[] args) {
        final int constantVar = 30;

        MyFunctionalInterface2 obj = () -> {
            System.out.println("Constant variable: " + constantVar);
        };

        obj.myMethod();
    }
}

@FunctionalInterface
interface MyFunctionalInterface2 {
    void myMethod();
}

예제 3: 메서드 내부 변수 참조

람다식 내부에서 메서드 내부의 변수를 참조하는 예제입니다.


// LambdaExample3.java

public class LambdaExample3 {
    public static void main(String[] args) {
        MyFunctionalInterface3 obj = getLambda();

        obj.myMethod();
    }

    public static MyFunctionalInterface3 getLambda() {
        int localVar = 40;

        return () -> {
            System.out.println("Local variable: " + localVar);
        };
    }
}

@FunctionalInterface
interface MyFunctionalInterface3 {
    void myMethod();
}