lambda 표현식:구문

. 첫 번째 lambda 표현식:
(String first, String second) -> Integer.compare(first.length, second.length())

표현식 형식: 매개변수, 화살표 -> 표현식
만약 계산을 담당하는 코드가 표현식으로 표시할 수 없다면, 작성 방법으로 작성할 수 있습니다. 즉 {} 패키지 코드를 사용하고return 문장을 명확하게 사용할 수 있습니다.
(String first, String second) -> {
            if (first.length() < second.length()) return -1;
            else if (first.length() > second.length()) return 1;
            else return 0;
        }

lambda 표현식에 매개변수가 없으면 매개변수가 없는 것처럼 빈 괄호 쌍을 제공할 수 있습니다.
() -> {
            for (int i=0; i<100; i++)
                doWork();
        }

만약 lambda 표현식의 매개 변수 형식이 유도될 수 있다면, 그것들의 유형을 생략할 수 있습니다. 예를 들어:
Comparator<String> comp =
                (first, second) -> Integer.compare(first.length(), second.length());

여기에서 컴파일러는 퍼스트와second가 문자열이어야 한다고 유도합니다. 왜냐하면 lambda 표현식이 문자열 비교기에 부여되었기 때문입니다.
메서드에 하나의 매개변수만 포함된 경우 매개변수의 유형을 유도하거나 중괄호를 생략할 수 있습니다.
EventHandler<ActionEvent> listener = event -> System.out.println("Thanks for clicking!");;
        //  (event) ->   (ActionEvent event) ->

다음과 같이 lambda 표현식의 매개변수에 주석이나 final 수정자를 추가할 수 있습니다.
(final String name) -> ...
(@NonNull String name) -> ...

lambda 표현식에 대한 반환 형식을 실행할 필요가 없습니다. 이것은 항상 상하문에서 유도됩니다. 예를 들어:
(String first, String second) -> Integer.compare(first.length(), second.length())

예상 결과 형식이 int인 상하문에 사용할 수 있습니다
lambda 표현식에서 일부 지점에서만 값을 되돌려 주는 것은 합법적이지 않습니다.예컨대
(int x) -> { if (x >= 0) return 1;}

좋은 웹페이지 즐겨찾기