더북(TheBook)

람다 표현식을 문자열 비교자(Comparator<String>)에 할당하므로, 컴파일러는 firstsecond가 문자열이라고 추론할 수 있다(이 할당은 다음 절에서 자세히 알아본다).

메서드에 매개변수가 한 개만 있고, 이 매개변수의 타입을 추론할 수 있다면 괄호도 생략할 수 있다.

EventHandler<ActionEvent> listener = event ->

    System.out.println("Oh noes!");

        // (event) -> 또는 (ActionEvent event) -> 대신 사용할 수 있다.


람다 표현식의 결과 타입은 명시하지 않는다. 하지만 컴파일러는 람다 표현식 바디에서 결과 타입을 추론한 후 기대하는 타입과 일치하는지 검사한다. 예를 들어 다음 표현식을 보자.

(String first, String second) -> first.length() - second.length()


이 표현식은 기대하는 결과가 int 타입(또는 Integer, long, double 같은 호환 타입)인 문맥에 사용할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.