Open leetaggg opened 1 year ago
람다는 자바에 추가된 함수형 프로그래밍의 일종입니다.
이러한 기능이 추가된 배경은 객체지향 프로그래밍을 기반으로 한 자바의 경우, 동작을 위한 메서드는 무조건 클래스 내부에 위치해야합니다. 그런데 생각해봅시다.. 한번만 사용할 동작을 위해 클래스를 생성하고, 동작을 선언해서 이를 metaspace 영역에 생성하고, 이에 접근하기 위한 객체를 생성하고.. 이런 과정이 너무 비효율적이지 않나요?
위와 같은 배경으로 자바는 함수형 프로그래밍을 지원하여 가독성이 높고, 나은 모듈화를 통해 때에 따른 개발 생산성을 높였습니다. 함수형 프로그래밍과 객체지향 프로그래밍에 관한 내용은 [여기]에 잘 정리되어 있는 것 같습니다.
위에서 함수형 프로그래밍에 관해 말씀드린 것이 바로 지금부터 드릴 설명 때문입니다. 함수형 프로그래밍은 불변하는 데이터의 특성을 가집니다. 즉, 데이터를 함수 밖에서 변형할 수 있는 객체지향 프로그래밍 방식과는 달리, 람다는 자신의 외부 데이터를 참조는 할 수 있으나 변경은 불가합니다. 이는 바로 람다가 Permanent 영역에 저장되기 때문입니다.
익명 클래스와 람다는 모두 함수형 인터페이스를 정의하며, 재사용의 가능성이 없는 코드를 간결하게 작성하기에 유리하다는 장점을 가집니다. 여기까지는 유사한 특성을 가지지만, 람다와 익명클래스는 명확한 차이점을 가집니다.
[컴파일시]
ps. 스터디 끝나고 나빼고 재밌게 놀지마여..
ps. 스터디 끝나고 나빼고 재밌게 놀지마여..
네 빅브라더
문제
람다는 어느 메모리 영역에 생성될까요?
contents - 세부 내용
익명 함수의 일종이니 스택에 생성될까요? 함수형 인터페이스의 인스턴스로 취급되니 힙에 생성될까요? 아니면 둘 다 생성될까요?
참고
익명 클래스는 힙 영역에 생성된다고 하는데 람다의 경우 어디에 생성될지 궁금하였습니다