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)
728x90
'Spring' 카테고리의 다른 글
[인프런 워밍업 클럽] BE 5번째 과제 - 클린 코드 (0) | 2024.02.23 |
---|---|
[인프런 워밍업 클럽] BE 4번째 과제 - POST, GET, PUT API 만들기 (0) | 2024.02.22 |
[인프런 워밍업 클럽] BE 2번째 과제 - GET, POST API 만들기 (0) | 2024.02.20 |
어노테이션과 커스텀 어노테이션 만들기 (0) | 2024.02.19 |
[스프링 프레임워크] 7. 요청 파라미터 취득하기 (0) | 2023.10.25 |