람다식(Lambda)

신광진·2021년 3월 18일
0

Java

목록 보기
17/19
post-thumbnail

람다식


익명함수를 생성하기 위한 식이다.

자바에서는 매개변수를 가진 코드블럭런타임시 익명구현객체로 생성된다.

형식


기본형식 : (자료형 매개변수명) → { 실행문 };

람다식으로 변환할 수 있는 인터페이스는 추상메서드가 1개인 인터페이스만 처리할 수 있다.

이러한 인터페이스를 함수적 인터페이스라고 한다.

함수적 인터페이스를 만들 때는 @FuntionalInterface로 지정해야 한다.

  • Sample Code

    /* 람다식을 사용하지 않은 경우 */
    public static void main(String[] args) {
    	Thread th1 = new Thread(new Runnable() {
    		@Override
    		public void run() {
    			for(int i=0; i<10; i++) {
    				System.out.println(i);
    			}
    		}
    	});
    	th1.start();
    }
    /* 람다식을 사용하는 경우 */
    public static void main(String[] agrs) {
    	Thread th2 = new Thread(
    		() -> {
    				for(int i=0; i<10; i++) {
    					System.out.println(i);
    				}
    		});
    		th2.start();
    }

람다식 생략


  • 매개변수의 자료형 이름은 생략 가능하다.

    (int x) -> { System.out.println(x); };
    (x) -> { System.out.println(x); };
  • 매개변수가 한 개일 경우 괄호 ( )는 생략가능하다.

    (int x) -> { System.out.println(x); };
    x -> { System.out.println(x) };
  • 매개변수가 한 개도 없는경우 괄호 ( )는 생략불가능하다.

    (int x, int y) -> { System.out.println(x + y); };
  • 실행문이 한 개일 경우 { }는 생략가능하다. (세미콜론도 함께 생략)

    x -> { System.out.println(x); };
    x -> System.out.println(x)
  • 실행문에 return문만 있는 경우 return명령과 { }는 생략가능하다.

    (x, y) -> { return x+y; };
    (x, y) -> x + y
profile
이거 왜안되냐

0개의 댓글