본문 바로가기
Language/Java

람다 1

by Zayne 2023. 2. 28.
interface Printable {
    void print(String s);
}

class Printer implements Printable {
    public void print(String s) {
        System.out.println(s);
    }
}

public class Lambda1 {
    public static void main(String[] args) {
        Printable prn = new Printer();
        prn.print("What is Lambda?");
    }
}

 

위 코드에 익명 클래스를 적용하면 다음과 같아진다.

 

interface Printable {
    void print(String s);
}

public class Lambda2 {
    public static void main(String[] args) {
        Printable prn = new Printable() {
            public void print(String s) {
                System.out.println(s);
            }
        };
        prn.print("What is Lambda?");
    }
}

 

클래스의 정의 하나가 줄어든 것을 볼 수 있다.

그리고 이를 람다 기반으로 수정하면 인스턴스 생성문을 생략할 수 있다.

 

interface Printable {
    void print(String s);
}

public class Lambda3 {
    public static void main(String[] args) {
        Printable prn = (s) -> {
            System.out.println(s);
        };
        prn.print("What is Lambda?");
    }
}

 

위 문장에서 Printable prn 의 오른쪽에 위치한 것이 람다식이다.

Printable prn = (s) -> { System.out.println(s); };

 

■ 람다식의 인자 전달

 

interface Printable {
    void print(String s);
}

public class Lambda4 {
    public static void ShowString(Printable p, String s) {
        p.print(s);
    }

    public static void main(String[] args) {
        ShowString((s) -> {
            System.out.println(s);
        }, "What is Lambda?");
    }
}

 

위 예제와 같이 메소드의 인자로 람다식이 전달될 수 있다.

'Language > Java' 카테고리의 다른 글

함수형 인터페이스  (0) 2023.03.03
람다 2  (0) 2023.03.02
네스티드 클래스와 이너 클래스  (0) 2023.02.27
컬렉션 프레임워크 5  (0) 2023.02.24
컬렉션 프레임워크 4  (2) 2023.02.23