고급자바_람다식

wstudee·2020년 9월 21일
0

JAVA_고급

목록 보기
5/19

Functional Interface

  • 추상메서드가 1개인 인터페이스
  • Functional Interface만 람다식으로 변환가능
  • @FunctionalInterface
  • 위 어노테이션 붙은 인터페이스에 메서드 두개 만들면 컴파일에러 발생함

람다식

  • 익명함수를 생성하기 위한 식
  • 매개변수를 가진 코드 블럭
  • 런타임시 익명구현객체로 생성됨

람다식 장점

  • 코드 간결

비교

@FunctionalInterface
public interface LambdaInterface {
	public void test();
}

1. 람다식을 사용하지 않는 경우 
LambdaInterface lam = new LambdaInterface() {
	//인터페이스의 모든 추상메서드를 실체메서드로 선언
    public void test() {
    	System.out.println("익명구현객체방식");
    }
};

2. 람다식을 사용하는 경우 
LambdaInterface lam = 
	() -> System.out.println("람다식");

람다식 작성방법

기본형식

(자료형이름 매개변수명, ... ) -> { 실행문들; ... }

  • 매개변수의 '자료형이름' 생략가능
    (int a) -> { System.out.println(a); }
    (a) -> { System.out.println(a); }

  • 매개변수가 1개인 경우 괄호'( )' 생략가능
    (단, 자료형이름을 지정할 경우에는 생략불가)
    a -> { System.out.println(a); }

  • 실행문이 1개인 경우 중괄호'{ }' 생략가능
    (단, 문장의 끝을 나타내는 세미콜론;도 생략)
    a -> System.out.println(a)

  • 매개변수가 하나도 없으면 괄호 '( )' 생략불가
    () -> { System.out.println(a); }

  • 반환값이 있을 경우 return 명령 사용
    ▶ (a, b) -> { return a + b ; }
    ▶ (a, b) -> return a + b ;

  • 실행문에 return 문만 있는 경우 return 명령과 괄호'{ }' 생략가능
    ▶ (a, b) -> a + b ;

  • 람다식 내부에서 사용되는 지역변수는 모두 final
  • 보통은 final 붙이지 않으면 컴파일러가 자동으로 붙여줌
  • 단, 지역변수의 값을 변경하는 식이 있을 경우에는 자동으로 붙여주지 않음

0개의 댓글