ABOUT ME

Today
Yesterday
Total
  • [JAVA] 람다식 (lamda Expression)와 함수형 인터페이스(Functional Interface)
    JAVA 2021. 10. 4. 14:48

    람다는 Java8의 추가된 기능 중 하나이다.

     

    람다 표현식(lamda expression)은 메서드로 전달할 수 있는 익명 클래스를 단순화한 표현식이다.

     

     

    람다식 사용법

     

    람다의 기본형태는 이렇다.

     

    (매개변수, ...) -> {실행문 ...}

     

    # 예제 1
    int max(int a, int b) { // 기본 표현식
        return a > b ? a : b;
    }
    
    (a, b) -> a > b ? a : b // 람다 표현식

    # 예제 2

    void printVar(String name, int i) { // 기본 표현식
    	System.out.println(name + " = " + i);
    }
    
    (name, i) -> System.out.println(name + " = " + i) // 람다 표현식

    # 예제 3

    int roll() { // 기본 표현식
    	return (int) (Math.random() * 6);
    }
    
    ( ) -> (int) (Math.random() * 6) // 람다 표현식

     

    이렇게 람다식이 등장하게 된 이유는 코드의 간소화, 가독성을 높이기 위함이다. 

     

    람다식의 특징

    - 람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수 취급된다.

    - 람다식으로 선언된 변수명은 다른 변수명과 중복되지 않는다.

     

    람다식의 장점

    - 코드가 간결하다.

    - 가독성이 높아 개발자의 의도가 선명하다.

    - 함수를 별도로 만들지 않아도돼 생산성이 높아진다.

    - 패럴 프로그래밍에 용이하다.

     

    함수형 인터페이스

    람다 표현식을 사용할 때에는 람다 표현식을 저장하기 위한 참조 변수의 타입을 결정해야만 한다.

     

    (참조변수의 타입  참조변수의 이름 = 람다 표현식)

     

    위의 형태에 따라 람다표현식을 하나의 변수에 대입할 때 사용하는 참조 변수의 타입을 함수형 인터페이스라고 합니다.

     

    함수형 인터페이스는 @FunctionalInterface 라는 어노테이션을 써 명시를 하며, 추상클래스와는 달리 단 하나의 추상 메소드만을 가져야합니다.

     

     

    # 예제 1

    @FunctionalInterface
    interface Calc{ // 함수형 인터페이스 선언
    	public int min(int x, int y);
    }
    
    public class Lamda02{
    	Calc minNUm = (x, y) -> x < y ? x : y; // 추상 메소드 구현
        System.out.println(minNum.min(3, 4)); // 함수형 인터페이스 사용
    }

     

    'JAVA' 카테고리의 다른 글

    [Java]Optional 활용법  (0) 2021.12.17
    [Java] Optional  (0) 2021.12.17
    [Java] java8 stream  (0) 2021.12.17
    [Java] 메소드 참조(method reference)  (0) 2021.12.16
    [JAVA] 익명클래스(Anonymous class)  (0) 2021.10.03

    댓글

Designed by Tistory.