Spring

[인프런 워밍업 클럽] BE 3번째 과제 - 람다식

yes_truly 2024. 2. 21. 23:34
728x90

 

🔑익명클래스(Anonymous class)

  • 이름이 없는 내부 클래스
  • 다른 클래스나 인터페이스의 인스턴스를 생성하는데 사용됨
  • 프로그램에서 일시적으로 한 번만 사용되고 버려지는 객체, 일회용 클래스
  • 정의와 동시에 객체를 생성할 수 있음
  • 어느 메소드에서 부모 클래스의 자원을 상속받아 재정의해 사용할 자식 클래스가 한 번만 사용되고 버려질 자료형일 경우 지역 변수처럼 익명 클래스로 정의하는 것이 유지보수, 프로그램 메모리면에서 이점을 얻을 수 있음

 

🔑람다(Lamda)

  • 익명 함수를 지원해 코드를 간결하고 가독성있게 작성할 수 있도록 함
  • 메소드의 인수로 전달되거나 메소드에서 반환될 수 있고 함수형 인터페이스의 인스턴스를 생성하기 위한 방법을 제공함
    • 함수형 인터페이스 : 하나의 추상 메소드만을 갖고 있는 인터페이
  • 한 줄로 간결하게 함수를 표현하는 방법
(매개변수, 선언) -> {

}

 


 

🔑@FunctionalInterface, 함수형 인터페이스

  • 추상 메소드가 오직 하나인 인터페이스. default method나 static method는 여러개 존재해도 됨
  • @FunctionalInterface 어노테이션을 통해 해당 인터페이스가 함수형 인터페이스 조건에 맞는지 검사해줌
  • 람다식은 함수형 인터페이스로만 가능함

 


 

🔑스트림(Stream) API

  • 원본 데이터를 변경하지 않음
  • 내부 반복을 통해 작업 수행
  • 재사용 불가능. 단 한 번만사용 가능함
  • 필터 - 맵 기반의 API를 사용해 지연 연산으로 성능을 최적화 함
  • parallelStream()메소드를 통해 병렬 처리를 쉽게 지원함
  • 스트림의 생성 → 스트림의 중개 연산 → 스트림의 최종 연산의 단계를 거치고, 중개 연산의 경우 Stream 형태로 결과를 반환해 연속적으로 연결해 사용할 수 있음

 


 

🔑메소드 레퍼런스(Method References)

  • 람다식을 구현할 때 사용하는 방법. 람다식을 더 간단하게 구현할 수 있음
  • 기존에 있던 다른 메소드를 참조해 그 메소드 자체를 함수형 인터페이스의 구현체로 사용함
  • ClassName::MethodName()형식으로 작성

 


 

 

🔍람다식은 왜 등장했을까?

  • 멀티 코어 프로세서들이 등장하면서 병렬화 프로그램에 대한 필요성이 생기기 시작
  • 이에 대응하기 위해 자바8에서 병렬화를 위한 컬렉션을 강화
  • 컬렉션을 더 효율적으로 사용하기 위해 스트림이 추가되고, 스트림을 효율적으로 사용하기 위해 함수형 프로그램이 추가되고, 함수형 프로그램을 위해 람다가 추가되고, 람다를 지원하기 위해 함수형 인터페이스가 등장하게 됨

 

🔍람다식과 익명 클래스는 어떤 관계가 있을까?

  • 람다식은 익명 클래스를 간결하게 표현할 수 있는 방법
  • 익명 내부 클래스를 사용해 콜백 함수를 구현하던  방식에서 익명 내부 클래스의 방식을 람다식으로 간단하게 작성할 수 있음
  • 람다식 문법
    • (타입 매개변수) -> {실행문} 의 형태
    • 예를들어 어떤 수 x와 y를 더한 값을 리턴하고자 한다면?
       (int x, int y) -> { return x+y;} 처럼 작성해주면 된다!!

 

 

 

 

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지] 강의 - 인프런 (inflearn.com)

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들

www.inflearn.com

 

728x90