(JAVA) Lambda Experssion

지식저장공간·2022년 11월 12일
0

Java

목록 보기
12/18
post-thumbnail

Lambda Expression

람다식이란

함수형 인터페이스, 인터페이스의 추상 메서드

함수형 인터페이스의 추상 메서드를 람다식을 통해 구현할 수 있다. 필요에 따라 새로운 함수형 인터페이스를 만들어 사용할 수도 있으며 이 경우에는 인터페이스를 생성하고 메서드를 선언해주어야 한다.

그러나 기본적으로 제공되는 함수형 인터페이스를 사용하는 경우에는 인터페이스를 생성하고 메서드를 선언할 필요가 없다.

람다식을 이용해 구현할 수 있는 인터페이스는 추상 메서드가 단 하나뿐인 함수형 인터페이스이다.

익명 메서드

람다식은 간단히 말해서 하나의 메서드를 하나의 식으로 표한한것이다. 메서드를 간략하면서도 명확하게 표한할 수 있게 해준다. 메서드를 람다식으로 표한하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수'라고도 한다.

메서드 선언부에서 접근제어자(private, public...)을 작성하지 않고, 반환타입(int,String,boolean...), 파라미터들의 자료타입을 작성하지 않아 간단하게 작성할 수 있다.

람다식의 장점

1) 코드 수가 줄어든다.
2) 람다식을 사용할 경우 메서드의 이름과 반환 자료형, 접근제어자를 생략한다.
3) 인터페이스의 메서드를 구현가능하고, 쉽게 표현할 수 있다.

람다식의 단점

1) (기본적으로 제공되는 메서드 외) 자신이 구현한 메서드의 재사용이 불가능하다.
같은 람다식이여도 필요한 메서드마다 작성해주어야한다.

2) 많이 사용할 경우 가독성이 떨어진다.

람다식 표현

파라미터 -> 식

//파라미터가 없는경우
() ->{Expression}

//파라미터가 존재하는 경우
화살표를 통해 파라미터와 식을 구별한다.
(Parameter) -> {Expression}

예시

public int sum(int a, int b){
	return a+b;
}

Lambda : (int a,int b) -> (a+b)

Lambda : (a,b) -> (a+b) //파라미터의 자료형이 유추되는 경우 자료형을 생략 할 수 있다.

Lambda : (a,b) -> {return a+b;} //return을 작성할 경우 {}를 생략 할 수 없다.

public int random(){
	return (int)(Math.random()*10);
}

Lamba : () -> (int)(Math.random()*10)

public int discount(int price){
	return price * 10 / 100;
}

Lamda : (price) -> price * 10 /100
        int discountPrice = (price) -> price * 10 /100; 

출처 : 자바의 정석 기초편(남궁성)

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글