개발/JAVA

[JAVA] 람다식

mabb 2022. 5. 19. 10:44
반응형

 안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
자바 기본기를 탄탄히 다지기 위한 공부 목적 포스팅입니다.
이것이자바다, HeadFirstJava 등의 교재와 구글링을 토대로 본인의 이해를 위해 작성하였으며
계속해서 살을 붙여나갈 계획입니다.
틀린 부분이 있을 경우 댓글 남겨주시면 감사하겠습니다.
---------------------------------------------------------------------------------------------------------

WHY
- 익명 구현 객체를 더 간편하게 만들 수 있다.
- 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합하여 효율적인 프로그래밍이 될 수 있다.
-병렬 처리, 이벤트 지향 프로그래밍에 적합

Lambda expression

Runnable runnable = () - > { // 실행내용 } ;

-> 함수적 인터페이스에 정의된 한 개의 추상 메소드를 오버라이드 한다.
()소괄호는 매개변수, {}중괄호는 실행내용.

함수적 인터페이스는 하나의 추상메소드만 가지고 있는 인터페이스.

주의점

람다식에서 this는 람다식을 실행한 객체의 참조
로컬 익명 구현객체의 특성을 가지므로 로컬 변수 사용 시 final의 특성을 가짐

 

함수적 인터페이스를 제공하는 API ↓ // 람다식을 쓸 수 있도록 만들어 놓은 API들.

 

java.util.function (Java SE 18 & JDK 18)

package java.util.function Functional interfaces provide target types for lambda expressions and method references. Each functional interface has a single abstract method, called the functional method for that functional interface, to which the lambda expr

docs.oracle.com

 

함수적 인터페이스의 대표적인 예 Runnable

 

Runnable (Java SE 18 & JDK 18)

All Known Subinterfaces: RunnableFuture , RunnableScheduledFuture All Known Implementing Classes: AsyncBoxView.ChildState, ForkJoinWorkerThread, FutureTask, RenderableImageProducer, SwingWorker, Thread, TimerTask Functional Interface: This is a functional

docs.oracle.com

 

람다식을 사용하면 함수적 인터페이스를 이용하여 함수적 프로그래밍을 구현할 수 있다.


원래는 구현클래스를 작성하고 구현객체 생성하여 인터페이스형 변수에 대입하여 메소드 이용하는 객체지향적 프로그래밍 방식을 사용해야함.

-->익명구현객체를 만들어 사용하면 재사용을 하지 않는 경우 클래스를 만들지 않아도 되는 편리함이 있음.

 

-->함수적 인터페이스는 람다식을 이용하여 함수처럼 바로바로 정의하여 사용하고 또 재정의하여 사용하는 등 편리하게 사용 가능.

구현클래스에서 오버라이드한 내용을 사용하고 오버라이드내용을 변경하여 다시 사용하려고 한다면 구현 클래스를 한 개 더 만들어야함. -> 람다식을 사용하면 바로 실행코드의 흐름 안에서 재정의 후 사용 가능.

 

반응형

'개발 > JAVA' 카테고리의 다른 글

[JAVA] 스트림과 병렬처리  (0) 2022.05.19
[JAVA] 멀티스레드  (0) 2022.05.19
[JAVA] 제네릭  (0) 2022.05.19
[JAVA] 예외처리  (0) 2022.05.19
[JAVA] 익명객체, 익명구현객체, 익명자식객체  (0) 2022.05.19