ahnnyung ,/Java

[Java] 람다식(Lambda Expression)의 개념 및 사용방법

hi,ho 2021. 7. 29. 02:45
반응형

1) 람다식이란

Java 의 Lambda Expression(이하 람다식)은 Java 8에서 공식적으로 추가되었다.
다음은 w3school에서 설명되어있는 람다식이다.

 

A lambda expression is a short block of code which takes in parameters and returns a value. Lambda expressions are similar to methods, but they do not need a name and they can be implemented right in the body of a method.

람다 표현식은 매개변수를 받아 값을 반환하는 짧은 코드 블록입니다. 람다 표현식은 메서드와 유사하지만 이름이 필요하지 않으며 메서드 본문에서 바로 구현할 수 있습니다.

 

@FunctionalInterface - 람다식을 만들 수 있는 인터페이스

람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어이다.

Java에서 람다 표현식으로 구현이 가능한 인터페이스는 오직 추상 메소드가 1개뿐인 인터페이스만 가능하며 그렇기때문에 추상 메소드가 1개인 인터페이스를 부르는 명칭이 추가됐다. 바로 함수형 인터페이스다.(@FunctionalInterface)

 

추상 메소드가 2개있으면 오류가 난다.
리턴타입이나 파라미터가 다른 추상 메소드라도 안된다.

 

익명 구현 객체 방식은 인터페이스에 선언된 추상 메소드 선언부만을 가지고 코드 내에서 직접 메소드를 구현해 호출하는 방식인데, 람다식은 특별히 추상메소드가 오직 1개이기때문에 조금 특별한 구현부를 가진다.

 

익명 구현 객체 방식
람다식

 

 

 

2) 장단점

주관적으로 느낀 장점과 단점이다.

장점

  • 코드가 간결해지고 식에 개발자의 의도가 명확히 드러나므로 가독성이 향상된다.
  • 메소드를 만드는 과정없이 한번에 처리할 수 있기에 코딩하는 시간이 줄어든다.

단점

  • 람다를 사용하면서 만드는 무명함수는 재사용이 불가능하다.
  • 디버깅이 까다롭다.
  • 람다를 남발하면 오히려 가독성이 떨어지고 지저분해질 수 있다.

 

 

 

 

3) 사용방법

1. ()->{} :: 파라미터 타입을 명시해줄 수 있고, 멀티라인 메소드 블록을 작성할 때 유용하다.

파라미터의 타입을 명시하고 싶고, 구현될 메소드가 멀티라인일 때 사용

 

 

 

2. ()-> :: 구현될 메소드가 한 줄이라면, 메소드 블록을 나타내는 중괄호가 생략 가능하다.

구현될 메소드가 한 라인이라면 중괄호가 생략 가능하다. 

 

 

 

3. ()-> :: 파라미터의 타입을 생략할 수 있다.

 

 

 

4. -> :: 파라미터가 1개인 경우, 파라미터를 감싸고 있는 소괄호도 생략 가능하다.

 

 

결과 :: 모두 잘 출력되는 걸 확인할 수 있다.

람다식 만세!

 

4) 정리

인터페이스의 익명 객체를 생성할 때, 람다식을 이용하면, 익명 구현 객체 방식으로 작성한 코드보다 훨씬 적은 라인 수로 가독성도 좋고 직관적인 코드를 만들 수 있었다.

 

또, 파라미터 형태와 메소드 구현부의 형태에 따라 다양한 람다식 표현이 가능했다. 이러한 람다식을 통해 기존의 코드로부터 보다 더 깔끔하고 맵시있는 코드를 작성할 수 있게 되었다.

 

하지만 너무 무분별한 람다식의 사용은 되려 코드를 읽을 때 불필요한 이해와 다소 생소한 문법으로 가독성을 해할 수 있다.

 

무엇이든 적절하게, 과하지 않게 사용하여야 완성도 높은 코드를 작성하는 데 도움이 될 것이다.

반응형