람다 추가 공부

이신아·2022년 9월 17일
0

스프링 공부를 하다가 람다가 기억이 안나서 예전에 들었던 강의, 책을 찾아보고 다시 공부해보았다.

윤성우 Java , Chapter 26. 람다 p.658

람다의 사용
Lambda3.java

interface Printable {   // 추상 메소드가 하나인 인터페이스
    void print(String s);
}

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

람다의 생성 원리
맨 처음, 익명 클래스로부터 시작.

Printable prn = new Printable() {   // 익명 클래스
    public void print(String s) {
        System.out.println(s);
    }
}

없어도 괜찮은, 유추 가능한 부분 제외.

Printable prn =                     // 익명 클래스
    public void print(String s) {
        System.out.println(s);
    };

다 유추가능하지만, s가 불분명함

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

s는 매개변수라는 걸 표시.

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

Printable 인터페이스의 추상 메소드를 관찰하여 매개변수 s가 String형 임을 알 수 있으니까, 줄이는 것을 허용

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

중괄호, 매개변수 형 생략, 매개변수 소괄호 생략 가능.

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

매개변수가 둘이고 반환하는 람다식

(a, b) -> { return a + b; }
(a, b) -> a + b;

매개변수가 없는 람다식

() -> { 
    Random rand = new Random();
    return rand.nextInt(50);
}

0개의 댓글