1. 람다식이란?
자바는 람다식의 도입으로 인해 객체지향언어인 동시에 함수형 언어가 되었다. 람다식의 장점은 과거 메서드보다 간결하며 이해하기 쉽다는 것이다. 모든 메서드는 클래스에 포함되어야 해서 클래스를 새로 만들어야 했고 객체를 생성해야 메서드를 호출할 수 있었지만, 람다식은 람다식 자체로 이 모든과정을 해결할 수 있다.
람다식은 아래와 같이 표현된다.
반환타입 메서드이름(매개변수 선언){
문장들}
(매개변수 선언) -> { 문장들 }
//ex1)
int max(int a, int b){
return a>b? a:b;
}
//람다식으로 변환하면
(int a, int b) ->{ return a>b? a:b;}
(int a, int b) -> a>b? a : b
(a,b) -> a>b? a:b
//ex2)
int sumArr(int[] arr){
int sum =0;
for(int i: arr)
sum +=i;
return sum;
}
//람다식으로 변환하면
(int[]arr) -> {
int sum =0;
for(int i: arr)
sum +=i;
return sum;
}
2. 함수형 인터페이스
람다식은 엄밀히 메서드와 동등한 것이 아닌 익명클래스의 객체와 동일한 것이다.
람다식을 호출하는 방법
타입 f = (int a, intb) -> a>b ? a: b;
//참조변수의 타입은 클래스 또는 인터페이스가 가능하다.
//예를 들어 max()라는 메서드가 정의된 MyFunction인터페이스가 정의되어있을 때
@Functionalinterface
interface MyFunction{
public abstract int max(int a, int b);
}
//인터페이스를 구현한 익명클래스의 객체는
MyFunction f = new MyFunction(){
public int max(int a, int b){
return a>b? a: b;
}
};
int big = f.max(5,3)//익명 객체의 메서드 호출
//익명 객체를 람다식으로 대체
MyFunction f = (int a, int b) -> a>b? a: b; //익명 객체를 람다식으로 대체
int big = f.max(5,3);
'Back-end > Java Language' 카테고리의 다른 글
@SuppressWarnings (0) | 2021.09.08 |
---|---|
ENUM (0) | 2021.07.30 |
Scanner (0) | 2021.07.05 |
0. StringBuilder vs. StringBuffer (0) | 2021.07.04 |
0. BufferedReader, BufferedWriter, Scanner, StirngTockenizer (0) | 2021.07.03 |