
익명의 함수(이름이 없는 함수)를 지칭하는 용어
자바에서 함수적 프로그래밍 지원 기법
코드의 간결화 및 병렬처리에 강함 (Collection API 성능 효과적 개선(Stream))
자바의 함수적 프로그래밍(람다식) 함수(=기능) 사용
-> 함수형 인터페이스의 메서드만 람다식 표현 가능
interface A {
public abstract void abc();
}
자바는 객체지향프로그램으로서 모든 함수는 클래스/인터페이스 내부에만 존재 가능. (클래스 내부의 함수=메서드)
인터페이스의 구현 메서드
// 메서드(함수)
리턴타입 메서드 이름(입력매개변수) {
// 메서드 내용
}
// 람다식
(입력매개변수) -> { // -> : 람다식 기호
// 메서드 내용
}
A a = () -> {System.out.rpintln("테스트");};
// 익명이너클래스 표현과 람다식의 경우에만 중괄호{} 다음에 세미콜론(;)이 옴.
A a = () -> System.out.println("테스트");
// 실행문이 하나인 경우 중괄호 생략 가능
// 함수형 인터페이스
interface A {
void method1();
}
// 익명 이너클래스 활용
A a = new A() {
public void method1() {
...
}
}
// 람다식 활용
A a = () -> { ... };
// 함수형 인터페이스
interface A {
double method4(int a, int b);
}
// 익명 이너클래스 활용
A a = new A() {
public double method4(int a, double b) {
return ...
}
};
// 람다식 활용
A a = (int a, double b) -> { return ... };
클래스 객체::인스턴스메서드 이름A a = new A() {
public void abc() {
B b = new B();
b.bcd(); // abc()메서드 = B객체의 bcd()메서드
}
};
A a = () -> {
B b = new B();
b.bcd(); // abc()메서드 = B객체의 bcd()메서드
};
B b = new B();
A a = b::bcd;
배열타입::new클래스 생성자 참조 -> 클래스의 new 생성자를 참조하는 경우 -> interface 메서드의 리턴타입=클래스객체
클래스이름::new
TIP) 클래스 생성자 참조를 위해서는 인터페이스 메서드의 매개변수에 따라 생성자 선택