본문 바로가기

람다

(3)
익명 클래스 → 람다 표현식 변환 시 주의할 점. 익명클래스에 비하여 람다표현식의 가독성은 굉장히 우수하다.아래의 예를 보자.(line 1:6) 과 line 8 은 동일한 의미이다 ! 12345678Runnable runnable1 = new Runnable() { @Override public void run() { System.out.println("Hi"); }}; Runnable runnable2 = () -> System.out.println("Hi");cs 하지만, 익명 클래스를 람다 표현식으로 변환 하고자 할때 몇 가지 주의할 점이 있다. 1. '익명 클래스'와 '람다 표현식'의 this는 다른 의미이다. 익명클래스의 this 는 익명클래스 자신을 지칭하지만, 람다 표현식에서의 this 는 선언된 클래스를 가리킨다. 예를 들면, 다음 코드에..
람다 표현식에서 참조하는 지역 변수가 꼭 final이어야 하는 이유 람다 캡처링(Capturing lambda) 람다 표현식에서는 익명 함수에서와 마찬가지로, 외부에서 정의된 변수(* 책에서는 자유변수free variable 라고 소개됨)를 활용할 수 있다.(이와 같은 액션을 람다 캡처링(capturing lambda)라고 소개되어 있다) 즉, 람다 표현식에서는 인스턴스 변수, 정적 변수등을 자유롭게 body에서 참조하여 사용할 수 있다.하지만 지역 변수를 사용하기 위해서는 지역 변수가 반드시 final 로 선언되어 있어야 한다는 제약 조건이 있다. 1234567891011// In Any Method...{ ... String name = "Variable";Runnable r = () -> System.out.println(name); ... }Colored by C..
자바8. 람다 표현식에 대하여. JAVA8 의 람다 표현식 메소드로 전달할 수 있는 익명함수를 단순화 한 것이라고 보면 된다.익명함수의 성질을 동일하게 가지지만 표현이 훨씬 더 간단하며, 메소드 파라미터로 전달하거나 변수로 저장할 수 있다. 다시 설명하면, 함수형 인터페이스의 추상 메소드의 구현체를 간단하게 표현하는 것이라고 생각하면 된다. 함수형 인터페이스 정확히 하나의 추상메소드를 지정하는 인터페이스이다. JAVA 8로 넘어 오면서 @FunctionalInterface 애노테이션이 추가되었는데, 이 함수형 인터페이스를 지칭할 때 사용한다. 함수형 인터페이스가 아닌 ( = 추상메소드가 2개 이상인) 인터페이스 사용하면 컴파일 에러가 발생한다. 단, default 메소드는 제외한다. 1234@FunctionalInterfacepubli..