주간목표

  • Java 필수강의 Chapter6까지 학습
  • 최은빈강사님 조건문/반복문 과제

함수형 인터페이스와 람다식


❓ 람다식이란? (Lambda expression)

: 메서드를 하나의 식으로 표현한 것
함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다.
메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지기 때문에 람다식을 '익명 함수'라고도 한다.

❓ 함수형 인터페이스

: 람다식을 다루기 위한 인터페이스
람다식과 1:1 연결을 위해 추상메소드는 하나만 정의되어야한다.

@FunctionalInterface
public interface MyNumber {
	
	int getMax(int num1, int num2);
}
// 함수형 인터페이스에서 메서드는 하나만 정의되어야하기때문에 
// int getMin(int num1, int num2); 한줄이 추가되면 에러가 난다.

꼴은 () -> {} 형태

모든 메서드는 클래스를 새로 만들어야하고 객체도 생성해야 메서드를 호출할 수 있지만 람다식은 람다식 자체만으로도 이 메서드의 역할을 대신할 수 있다.

= 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해졌다.



🙋예제

두 값 중 큰 값을 반환하는 메서드 max를 람다식으로 변환하자면,
메서드에서 이름과 반환타입을 제거한 다음 매개변수 선언부와 몸통 {} 사이에 -> 연산자를 추가한다.

        int max(int a, int b)    {
            return a > b ? a : b;
        }
               (int a, int b) -> {
            return a > b ? a : b;
        }

반환값이 있는 메서드의 경우 return문을 식으로 대신하여 식의 연산 결과가 자동으로 반환값이 된다.

           (int a, int b) -> a > b ? a : b

이때는 문장이 아닌 '식'이므로 끝에 ;를 붙이지 않도록 주의한다.


//람다식 사용
MyNumber myNumber = (x, y) -> x > y ? x : y;

System.out.println(myNumber.getMax(10, 20));

위와같은 람다식 사용으로 클래스 선언을 거치지 않고 인스턴스 생성과 동시에 출력문이 수정되어 출력됨을 확인할 수 있다.


정리

  • 람다식의 장점 : 간결한 코드, 가독성 향상, 코딩시간 단축
  • 람다식의 단점 : 익명 함수 재사용 불가능, 디버깅 까다로움, 남발 시 오히려 가독성 저하

※ 주의 : 상황에 따른 {} () 괄호 생략과 ; 유무를 세심하게 주의하기


다음 주간목표

  • 백엔드 개발 마스터 Kit 강의 Part2. 객체지향 프로그래밍까지 수강
    (필수강의랑 진도 맞춘 후 병행하기)
  • 문자열 과제
profile
이안이의 우당탕탕 개발기

0개의 댓글