Java

[Java]람다식(Lambda Expressions)

MoZZANG 2022. 4. 6. 19:20
람다식이란?
  • JDK 8부터 지원하기 시작했다.
  • 함수 인터페이스를 생성해야 사용할 수 있다.
  • 익명함수를 생성하기 위한 표현식으로 함수형 언어에서 사용하는 함수 표현방법이다.
  • 매개변수로 함수를 전달하거나 반환값으로 함수를 반환 할 수 있다.
  • 람다식은 인터페이스의 추상메소드를 간결하게 그리고 하나의 추상메소드로 여러가지 기능을 갖는 다양한 일회성 익명함수를 구현하는 것이 목적이다.
  • 추상 메소드를 하나만 갖는 인터페이스(함수형 인터페이스라 함)가 필요하다.
  • @Functionalinterface로 인터페이스를 만드는 경우, 하나 이상의 추상메소드 정의시 컴파일 에러가 발생한다.
  • 컬렉션이나 배열의 데이터를 다룰 때 Stream객체의 메소드 인자로 전달할 때 많이 사용한다.

 

람다식은 함수를 간결하게 표현하기 위해 많은 생략기법을 사용한다.
  1. 매개변수의 자료형 생략가능
  2. 매개변수가 한개인 경우 매개변수를 감싸는 괄호를 생략가능
  3. 함수 구현부에 명령문이 한개인 경우 구현부를 감싸는 중괄호 생략가능
  4. 함수 구현부에 명령문이 한개이고 그 명령문이 return문일 경우 return도 생략가능
  5. 매개변수가 없거나 두 개 이상일때는 무조건 괄호로 감싸야 한다.

 

-java.util.function 패키지는 자주 쓰이는 형식의 메서드를 함수형 인터페이스로 정의해 놓았다

--------------------+-------------------------+------------------------------------------------
인터페이스          + 추상 메소드             |    설 명
--------------------+-------------------------+------------------------------------------------
java.lang.Runnable | void     run()            |     매개변수도 없고, 반환값도 없음
--------------------+-------------------------+------------------------------------------------
Supplier              | T        get()              |     매개변수는 없고, 반환값만 있음
--------------------+-------------------------+-------------------------------------------------
Consumer           | void     accept(T t)     |     Supplier와 반대로 매개변수만 있고, 반환값이 없음
--------------------+-------------------------+-------------------------------------------------
Function             | R        apply(T t)       |     일반적인 함수. 하나의 매개변수를 받아서 결과를 반환
--------------------+-------------------------+--------------------------------------------------
Predicate            | boolean  test(T t)       |     조건식을 표현하는데 사용. 매개변수는 하나, 반환 타입은 boolean
--------------------+-------------------------+--------------------------------------------------
BiConsumer         | void     accept(T t,U u)|    두개의 매개변수만 있고, 반환값이 없음
--------------------+-------------------------+---------------------------------------------
BiPredicate          | boolean  test(T t, U u) |    조건식을 표현하는데 사용됨. 매개변수는 둘, 반환값은 boolean
--------------------+-------------------------+------------------------------------------------------
BiFunction           | R       apply(T t, U u)  |    두개의 매개변수를 받아서 하나의 결과를 반환
--------------------+-------------------------+--------------------------------------------------------

 

▲ 람다식을 사용하기 위한 추상메소드를 하나만 가지는 함수형 인터페이스를 생성하자.

 

 

▲추상메소드를 가진 인터페이스를 상속받은 클래스를 정의하고 인터페이스의 추상메소드를 오버라이딩하자.

 

'Java' 카테고리의 다른 글

[Java]Stream  (0) 2022.04.06
[Java]Generic  (0) 2022.04.06
[Java]입력과 출력 - File  (0) 2022.03.27
[Java]입력과 출력 -part.7(Object InOutStream)  (0) 2022.03.27
[Java]입력과 출력 -part.6(Data InOutStream)  (0) 2022.03.27