미소의 세상

람다식 본문

JAVA

람다식

짱미소 2022. 3. 10. 19:42

예시

public interface Calc {
    int plus(int x, int y);
}

public class MyClass {
    public int test(Calc calc) {
        int number = calc.plus(1, 2);
        System.out.println("plus is "+number);
        return number;
    }
}

 

람다식을 사용하지 않은 예제1

public class Main {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        var sum = myClass.test(new Calc() {
            @Override
            public int plus(int x, int y) {
                System.out.println("x: " + x + " y: " + y);
                return x + y;
            }
        });

        System.out.println();
    }
}

x: 1 y: 2
plus is 3
3

 

 

 

아래는 람다식을 사용한 예제

public class Main {

    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        var sum = myClass.test((x, y) -> {
            System.out.println("x: " + x + " y: " + y);
            return x + y;
        });

        System.out.println(sum);
    }
}

x: 1 y: 2
plus is 3
3

 

 

람다식을 사용하지 않은 예제2

public class Main {
    public static void exec(Calc calc) {
        int x = 1; // 2
        int y = 2; // 3
        int value = calc.plus(x, y); // 4 실행을 위해 아래 선언부로 이동. 6. 5에서 1 + 2 = 3 이라는 결과 받음
        System.out.println(value); // 7 출력
    }

    public static void main(String[] args) {
        exec((i, j)->{ // 1. 호출되면 exec로 이동
            return i+j; // 5. 여기서 i는 위의 x, j는 y이므로 1+2 표현이 됨. 결과를 위로 반환
        });
    }
}

아래는 람다식을 사용한 예제

 

public static void main(String[] args) {
        exec(Integer::sum);
    }

장점

자바 8 이전의 익명 클래스에 비해 코드가 간결해짐

람다식에 개발자의 의도를 명확하게 표현할 수 있음

병렬 프로그래밍에 용이

단점

람다식을 남용하면 비슷한 함수가 중복 생성될 수 있음

재귀함수로 만들기가 까다로움

'JAVA' 카테고리의 다른 글

Java 버전별 특징  (0) 2022.10.20
Java - Optional  (0) 2022.03.04
Comments