모던 자바 : 자바 8 변경점
자바는 진화하는 언어이며, 가장 큰 진화는 Java 8에서 이루어졌다고 한다.
함수형 프로그래밍
함수를 일급 값으로
프로그래밍에서 지원하는 모든 연산을 지원하고 있고, 이러한 연산을 모두 지원하는 “값”들을 일급 시민, 또는 일급 객체라고 한다.
하지만 특정한 연산을 지원하지 않는 값이기 때문에 메서드는 이급 시민으로 볼 수 있다.
결론 : Java 8에 메서드 참조 기능이 도입되었다.
람다 : 익명 함수
- 람다는 익명함수를 지칭하는 말
- 익명함수란 말 그대로 이름이 없는 함수를 뜻하며, 일급 객체로 취급
- 함수를 값으로 사용 할 수도 있으며 파라미터에 전달
- 변수에 대입 하기와 같은 연산들이 가능
Javascript ES6의 Arrow function과 같다.
스트림
- 스트림은 데이터 처리연산을 지원하도록 소스에서 추출된 연속된 요소입
- 컬렉션이 데이터를 저장하거나 접근하는데 초점을 맞춘 인터페이스라면
- 스트림은 데이터를 처리하는데 초점을 맞춘 인터페이스
- 이해가 가지 않는다면, 일단 컬렉션의 반복을 멋지게 처리하는 일종의 기능이자, 멀티스레드 관련 코드를 구현하지 않아도 알아서 병렬로 추가해주는 기능이라고 생각하면 좋다.
람다 함수 문법
// 기본적으로 문법은 다음과 같습니다.
(파라미터 값, ...) -> { 함수 몸체 }
// 아래의 함수 두개는 같은 함수입니다.
// 이름 반환타입, return문 여부에 따라 {}까지도 생략이 가능합니다.
public int toLambdaMethod(int x, int y) {
return x + y;
}
(x, y) -> x + y
// 이런 함수도 가능
public int toLambdaMethod2() {
return 100;
}
() -> 100
// 모든 유형의 함수에 가능
public void toLambdaMethod3() {
System.out.println("Hello World");
}
() -> System.out.println("Hello World")
스트림 사용하는 방법
// 스트림을 받아오기 (.stream())
carsWantToPark.stream()
// 스트림 가공하기
.filter((Car car) -> car.getCompany().equals("Benz"))
// 스트림 결과 만들기
.toList();
'기타 > 개발일기' 카테고리의 다른 글
[TIL] Jackson, Controller, DTO, JDBC (0) | 2024.01.18 |
---|---|
[TIL] Gradle, Tomcat, 테스트 코드, Lombok, Spring MVC, 정적 및 동적 페이지 (0) | 2024.01.17 |
[TIL] 프로세스와 쓰레드 (1) | 2024.01.04 |
[TIL] 예외처리, 제네릭 (0) | 2024.01.03 |
[TIL] 클래스, 상속, 인터페이스 (0) | 2024.01.02 |