https://www.youtube.com/watch?v=3wnmgM4qK30
<Java의 정석> 남궁성님의 유튜브 영상을 보고 정리한 내용입니다.
람다식 : 함수 (메서드)를 간단한 '식'으로 표현하는 방법
-> 익명객체 (이름이 없는 객체) [반환 타입과 이름을 제거하고 -> 를 넣어 만든다
람다식은 익명객체라고 하였다.
주석 코드를 보면 람다식은 객체이기때문에 타입을 Object로 두고 선언을 하면 에러가 난다.
더하여 , 람다식을 풀어쓰면 주석이 아닌 코드와 같다. 당연하지만 이 코드도 에러가 난다.
이유는 obj에는 max 라는 기능은 있지만 타입이 Object 타입이기 때문에 내가 만든 메소드는 사용하지 못한다. [Object 는 자바의 최상위 부모타입이기 때문에, 모든 클래스들이 Object 클래스를 상속한다]
//참고로 저 문법은 익명 클래스를 선언할 때 쓰는 문법이다. 클래스의 생성과 객체 생성을 동시에 할 수 있다.
이것을 해결하기 위해 함수형 인터페이스가 등장하였다.
함수형 인터페이스란, 오직 하나의 추상 메소드를 가지고 있는 인터페이스이다.
@FunctionalInterface 어노테이션은 단순히 함수형 인터페이스 인지 검사하는 어노테이션이다. 없어도 잘 돌아간다. [추상 메소드 2개 이상이 되어버리면 오류 발생]
주석 안의 코드는 람다식을 작성 하지 않았을 때의 코드이다. 저 코드를 람다식을 이용하여 간단하게 바꿀 수 있다.
결국 람다식을 사용하기 위해선 익명객체이기 때문에 참조 변수가 필요하고, 메소드를 호출(사용) 하기 위해서 함수형 인터페이스의 추상 메소드 선언을 통해 이름을 정의하여 호출(사용) 할 수 있다.
함수형 인터페이스 타입으로 람다식의 참조변수를 받을 수 있다.
람다식은 익명 객체이다.
람다식을 통해 메서드를 간단한 식으로 표현 할 수 있다.
너무 멋져요