1. 람다 표현식(lambda expresssion) : 함수형 프로그래밍(익명함수)
Q. 함수랑 메소드랑 다른가?
함수 : 특정 작업을 수행하는 독립적인 존재(알고리즘 할 때 따로 구현하는 function() 생각하면 될 듯)
메소드(클래스함수) : 클래스, 구조체, 열거형에 포함되어 있는 함수, 해당 클래스에 대한 객체가 생성되어 사용 가능
★ 자바에서는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스라 함
따라서 자바에서 람다 표현식은 익명 클래스와 같다고 할 수 있다
new Object() {
int min(int x, int y) {
return x < y ? x : y;
}
}
(x,y) -> x<y ? x : y //람다 표현식
함수형 인터페이스(functional interface)
람다 표현식을 하나의 변수에 대입할 때 사용하는 참조 변수의 타입
함수형 인터페이스는 추상 클래스와는 달리 단 하나의 추상 메소드만을 가져야 한다
@FunctionalInterface
위와 같은 어노테이션을 인터페이스의 선언 앞에 붙이면, 컴파일러는 해당 인터페이스를 함수형 인터페이스로 인식한다
자바 컴파일러는 이렇게 명시된 함수형 인터페이스에 두 개 이상의 메소드가 선언되면 오류를 발생시킨다
@FunctionalInterface
interface Calc { // 함수형 인터페이스의 선언
public int min(int x, int y);
}
public class Lambda02 {
public static void main(String[] args){
Calc minNum = (x, y) -> x < y ? x : y; // 추상 메소드의 구현
System.out.println(minNum.min(3, 4)); // 함수형 인터페이스의 사용
}
}
2. 스트림 API(stream API) : 데이터의 추상화 (iteraotr로 검색해서 사용하는 코드 재사용성 증가)
3. java.time 패키지 : Joda-Time을 이용한 새로운 날짜와 시간 API(Calander 개선)
4. 나즈혼(Nashorn) : 자바스크립트의 새로운 엔진(자바스크립트의 기본 엔진으로는 모질라의 리노(Rhino) 사용성능과 메모리 관리 면에서 크게 개선된 스크립트 엔진 Nashorn 변경)
5. 인터페이스에 default로 구현된 메소드를 사용할 수 있다
'Backend > Java' 카테고리의 다른 글
Servlet Programming (0) | 2022.09.16 |
---|---|
JDBC 프로그래밍 (0) | 2022.09.14 |
Java 순열과 조합 (0) | 2022.08.04 |
Java 코딩테스트를 위한 문법 (0) | 2022.08.02 |
Java 직렬화 (0) | 2022.07.27 |