[인프런워밍업스터디_BE_0기] 세 번째 과제!
[질문]
1. 자바의 람다식은 왜 등장했을까?
2. 람다식과 익명 클래스는 어떤 관계가 있을까?
- 람다식의 문법은 어떻게 될까?
다음 키워드를 참고해서 질문에 답해보자!
익명 클래스
,람다
,함수형 프로그래밍
,@FunctionalInterface
,스트림 API
,메소드 레퍼런스
1. 익명 클래스
'익명' 말그대로 이름이 없는 클래스라는 뜻이다. 우리가 클래스의 이름을 짓는(=만드는) 이유는 무엇일까? 그 클래스를 다음에도 사용하기 위해서이다! 이런 의미에서 익명 클래스는 단발성으로 사용되는 클래스로 프로그램에서 일시적으로 한 번만 사용되고 버려진다. 즉 재사용이 되지 않는다는 것이다.
만약 한 번만 사용되고 버려질 클래스가 있다면 굳이 이 클래스를 영구적으로 정의하기 보다는 한 번 정의하여 사용한 뒤 바로 제거하는게 유지보수적으로 보나 메모리와 같은 자원적인 측면으로 보나 더 좋은 방법일 것이다.
하지만 이와 같은 익명클래스는 코드 내부에서 클래스를 정의하다보니 코드 가독성이 떨어지게 되는데... 여기서 다음 키워드인 람다가 등장한다!
2. 람다
람다 표현식이란 다음과 같이 괄호() 와 화살표 -> 를 사용해 함수를 간결하게 선언하는 방법으로 Java 8에서 등장한 람다 표현식은 위와 같이 코드 가독성이 떨어지는 익명 클래스의 대안이 되어주었다! 이런 람다 표현식이 등장한 이유는 다음과 같다.
코드를 간결하게 만들어 가독성을 높일 수 있기 때문에
컬렉션 요소를 필터링하거나 매핑하는등 보다 쉽게 처리할 수 있기 때문에
병렬처리에 용이하기 때문에
함수형 인터페이스를 간편하게 구현할 수 있기 때문에
오늘도 시간이 부족해서 전부 정리하지 못했다...ㅠ 주말을 활용해서 정리하지 못한 나머지 키워드도 꼭 정리해야겠다.. 그럼 다시 처음으로 돌아가서 질문에 답해보자!
[질문 1] 자바의 람다식은 왜 등장했을까?
코드를 간결하게 만들어 가독성을 높일 수 있기 때문에
컬렉션 요소를 필터링하거나 매핑하는등 보다 쉽게 처리할 수 있기 때문에
병렬처리에 용이하기 때문에
함수형 인터페이스를 간편하게 구현할 수 있기 때문에
[질문 2] 람다식과 익명 클래스는 어떤 관계가 있을까?
람다식과 익명클래스는 서로 비슷한 기능을 하지만 람다식은 기존에 사용되던 익명 클래스의 단점을 보완한 대안이라고 볼 수 있으며 이러한 람다식의 문법은 다음과 같다.
(parameter) -> expression
참고 자료
인프런 강의
최태현 - 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
https://www.inflearn.com/course/lecture?courseSlug=java-to-kotlin&unitId=110633
기술 블로그
https://mangkyu.tistory.com/113
https://developer-talk.tistory.com/499
댓글을 작성해보세요.