JAVA lambda식

전윤지·2021년 12월 8일
0

JAVA

목록 보기
7/10

1. lambda식이란?

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

  • 메소드를 하나의 식으로 표현한 것
  • 메소드 이름, 반환값이 없어지므로 익명함수 (anonymous fuction)이라고도 함
  • 람다식의 도입으로 자바 = 객체지향 언어 + 함수형 언어 성질 가지게 됨

함수형 프로그래밍?

  • 어떻게 할껀지 (how)보다 무엇(what)을 할 건지 나타내는 방식
  • 선언형 프로그래밍 중 하나

2. lambda식 예제

1) 람다식 사용 X

  • 기존에는 interface를 이용해 다형성을 제공하기 위해서 다음과 같은 절차가 필요했음
    1) interfate 생성
    2) interface를 구현할 class 생성
    3) 사용 시, interface타입의 변수에 class 객체를 생성해서 사용

2) 람다식 사용

  • interface를 구현할 class의 생성없이, 바로 interface 변수에 람다식 대입하여 사용함

3. 람다식 표현법

  • 람다식에서 사용할 인터페이스
public interface Calculator {
    public int calculate(int x, int y);
}

1) 기본 사용법

(매개변수 타입, 매개변수) -> {실행문;}

public void calculateFuc() {
        Calculator cal = (int x, int y) -> {
            return x + y;
        };
        System.out.println(cal.calculate(1, 2));
}

2) 매개변수 타입 생략

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

public void calculateFuc() {
        Calculator cal = (x, y) -> {
            return x + y;
        };
        System.out.println(cal.calculate(1, 2));
}
  • 매개변수가 1개이거나, 2개이상의 매개변수 타입이 같을 때 매개변수 타입 생략가능

3) 매개변수 없는 경우

() -> {실행문;}

public interface Calculator2 {
    public void calculate2();
}
public void calculateFuc2() {
        Calculator2 cal2 = () -> {System.out.println("매개변수 없음"); };
        cal2.calculate2();
}

4) 실행문 괄호 생략

() -> 실행문;

public void calculateFuc() {
        Calculator cal = (x, y) -> x + y;
        
        System.out.println(cal.calculate(1, 2));
}
  • 실행할 문장이 1개일 때는 {} 생략가능.
  • 반환이 필요한 메소드의 경우 return 키워드도 생략해야 함

5) 소괄호, 중괄호 생략

매개변수 -> 실행문;

public void calculateFuc2() {
        Calculator2 cal2 = x -> System.out.println("매개변수"+x);
        cal2.calculate2(3);
}
  • 매개변수 1개, 실행문 1개인 경우 ()와 {} 생략 가능

4. 람다식 사용시 주의점

  • 구현해야 할 인터페이스의 추상 메소드가 단 1개여야 함

public interface Calculator {
    public int calculate(int x, int y);
    public void calculate2(int x);
}

  • 인터페이스에 추상 메소드가 2개 이상인 경우, 람다식을 사용하면 에러 발생
    -> 한 인터페이스에 하나의 추상 메소드만 담기도록 해야 함


출처 : https://galid1.tistory.com/509

0개의 댓글