람다식
- 함수형 프로그래밍: 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법
- 데이터 처리부는 제공된 함수의 입력값으로 데이터를 넣고 함수에 정의된 처리 내용을 실행
- 람다식: 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록이다.
- 자바는 람다식을 익명 구현 객체로 변환
출처, 이것이 자바다
출처, 이것이 자바다
함수형 인터페이스
- 인터페이스가 단 하나의 추상 메소드를 가지는 것
출처, 이것이 자바다
- 인터페이스가 함수형 인터페이스임을 보장하기 위해서는 @FunctionalInterface 어노테이션을 붙임
- @FunctionalInterface: 컴파일 과정에서 추상 메소드가 하나인지 검사해 정확한 함수형 인터페이스를 작성할 수 있게 도와주는 역할
package ch16.sec01;
/*
람다식? 메소드를 하나의 식으로 표현한 것. 함수 또는 메소드명이 없이 매개변수와 실행구문으로 사용하여 만들수 있다. 그래서 익명 함수라고 부름.
함수형 인터페이스 - 하나의 기능을 제공하는 단 1개의 추상 메소드로 정의되어 있는 인터페이스
단 추상 메소드 외에 디폴트 메소드, 정적 메소드는 사용가능하다.
목적 : 람다식문법으로 사용하고자 한다.
*/
//인터페이스, 함수형 인터페이스는 구현 클래스를 사용하지 않고, 람다식을 사용하여 작업할 수가 있다.
@FunctionalInterface //컴파일러에게 이 인터페이스가 함수형 인터페이스 라는 것을 제공.
public interface Calculable {
//추상 메소드
void calculate(int x, int y);
/*
람다식으로 표현.(메소드 이름은 제외)
(x, y) -> {
int result = x + y;
System.out.println("result: " + result);
}
*/
}
package ch16.sec01;
public class LambdaExample {
public static void main(String[] args) {
//1)구현 클래스가 만들어져 있지않다.
//2)구현 객체 생성이 없다.
//메소드 호출시 매개변수가 함수적 인터페이스로 되어 있다면,
//매개변수에 람다식 구문을 사용하여, 작업 할 수가 있다.
//함수형 인터페이스에 있는 추상 메소드를 람다식 문법으로 구현하여 제공함.
//결과적으로 추상 메소드를 람다식으로 구현한 형태
action((x, y) -> {
int result = x + y;
System.out.println("result: " + result);
});
action((x, y) -> {
int result = x - y;
System.out.println("result: " + result);
});
}
//매개변수가 함수형 인터페이스 Calculable calculable
//이 메소드 호출시 람다식으로 매개변수의 정보를 제공할 수가 있다.
// Calculable calculable = (x, y) -> {
// int result = x - y;
// System.out.println("result: " + result);
// };
public static void action(Calculable calculable) {
//데이터
int x = 10;
int y = 4;
//데이터 처리
calculable.calculate(x, y);
}
}
package ch16.sec01;
/*
함수형 인터페이스에 람다 구문을 매개변수의 값으로 사용하는 예제.
*/
@FunctionalInterface
interface MyLambdaFunction {
int max(int a, int b);
}
public class LambdaExample2 {
public static void main(String[] args) {
//람다식을 이용한 익명 함수
//함수형 인터페이스 변수에 추상 메소드를 구현한 람다식을 값으로 대입.
MyLambdaFunction lambdaFunction = (int a, int b) -> { return (a > b) ? a:b; };
System.out.println(lambdaFunction.max(3, 5));
}
}
매개변수가 없는 람다식
- 함수형 인터페이스의 추상 메소드에 매개변수가 없을 경우 람다식 작성하기
- 실행문이 두 개 이상일 경우에는 중괄호를 생략할 수 없고, 하나일 경우에만 생략할 수 있음
출처, 이것이 자바다
출처, 이것이 자바다
매개변수가 있는 람다식
- 함수형 인터페이스의 추상 메소드에 매개변수가 있을 경우 람다식 작성하기
- 매개변수를 선언할 때 타입은 생략할 수 있고, 구체적인 타입 대신에 var를 사용할 수 있음
출처, 이것이 자바다
- 매개변수가 하나일 경우에는 괄호를 생략 가능. 이때는 타입 또는 var를 붙일 수 없음
출처, 이것이 자바다
리턴값이 있는 람다식
- 함수형 인터페이스의 추상 메소드에 리턴값이 있을 경우 람다식 작성하기
- return 문 하나만 있을 경우에는 중괄호와 함께 return 키워드를 생략 가능
- 리턴값은 연산식 또는 리턴값 있는 메소드 호출로 대체 가능
출처, 이것이 자바다
'라이브러리 활용 - 람다식' 카테고리의 다른 글
생성자 참조 (0) | 2023.02.07 |
---|---|
메소드 참조 (0) | 2023.02.07 |