상세 컨텐츠

본문 제목

자바8 람다 표현식 (JAVA8 Lambda expression)이란?

Programming language/자바

by choiDev 2018. 12. 24. 23:58

본문


안녕하세요 오늘 포스팅은 람다 표현식입니다
람다는 초보개발자 분들이 적용하기도 힘들고 람다 자체를 배운다고 해서 어떻게 사용할지 판단도 어렵다고 생각합니다.

제 추천은 람다, 컬렉션, 스트림 등의 문법을 공부한 뒤 람다와 스트림등의
남용의 위험성이나 단점들에 대해 검색해보고 적절한 사용처를 찾는 것이 좋다고 생각합니다.

아 그리고 람다를 시작하시기 전에 함수형 프로그래밍에 대한 개념정도는 읽어 보시고 시작하는 편이 좋다고 생각해서
함수형 프로그래밍이란? 객체지향 프로그래밍과는 어떤 차이를 보이는지?
이 두 가지 가볍게 알아보고 시작하겠습니다.

함수형 프로그래밍이란?






제가 작성한 글이 있으니 간단하게 참고 하시면 됩니다.


객체지향 프로그래밍과의 차이?
함수형과 객체지향 어떻게 비교할 수 있을까?

언어의 관점에서 보면 일급객체를 생각할수 있다

컴퓨터 프로그래밍 언어 디자인에서 특정 언어의 일급 객체라 함은 일반적으로 다른 객체들에 적용가능한 연산을 모두 지원하는 객체를 가리킨다. 여기서 연산이란 함수에 매개변수로 넘기기 변수에 대입하기 등을 말한다.
위키백과 일급객체란?

함수형 언어에서는 함수 자체가 일급 객체가 되겠지만 객체지향 언어에서는 클래스(또는 객체)가 일급 객체가 됩니다.

일급객체의 조건
- 변수나 데이터 구조를 안에 담을 수 있다.
- (하위 루틴의) 파라미터로 전달할 수 있다.
- (하위 루틴의) 반환 값으로 사용할 수 있다.
할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.

예를 들면, 객체지향은 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있지만
함수형은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 합니다.

자 이제 어느정도 함수형 프로그래밍에 대한 짧은 지식을 보았으니 람다에 대하여 언급하겠습니다~!

람다 표현식 정의
- 람다 표현식이란 간단히 말해 메소드를 하나의 식으로 표현한 것
- 단순한 람다 구문의 경우, 람다 구분에 중괄호가 없을 수도 있다.
- Return이 없을 수도 있다.
- 매개변수에는 타입을 명시하지 않아도 된다. (타입 추론)
- 람다식 문법을 컴파일러가 익명 클래스로 변환한다.
즉, 함수형 인터페이스를 컴파일러가 구현하도록 위임하는 형태라 볼 수 있다.

장점
- 반복문, 비교문등의 블록 크기를 간결하게 축소 가능.
- 객체를 생성 없이 기능을 정의 후 바로 사용가능 (1회용 메서드)
- 1회용이기에 메서드의 네이밍이 필요 없음
- 프로그래머의 의도가 분명하게 드러나기에 가독성 증가.Null 방어로직 ‘if(obj != Null)’ 을 벗어날 수 있다.

단점
- 람다식을 남용할 경우 디버그시 찾기 힘든 문제가 있다.
- 러닝커브가 있어서 자바 개발자들도 적용을 꺼리는 경우가 있다.

관련글 더보기