○Lambda Expression
▷식별자 없이 실행 가능한 함수
▷코드에 직접 함수를 적어 이를 호출하는 방식
▷주로 event listeners / callbacks에 사용
▶Functional Interface
▷단 하나의 abstract 메소드만을 가진 Interface로 정의됨.
▷주로 event listener들이 이런 형식으로 만들어짐.
▶Lambda Expression 이전의 표현 방법
▷Interface 객체에 함수를 따로 정의할 필요가 있었음.
▶Lambda Expression을 통한 Functional Interface
▷Functional Interface를 간단하게 표현 가능함.
▶Lambda Expression 표기
▷(매개변수, ...) -> { 실행문 ... }
▶generic 사용
▷Lambda Expression을 통해 Generic Parameter를 자동으로 지정 가능하다.
▶Parameter: 실행문에서 사용할 매개 변수들.
▷Single Method Interface에서 사용하는 경우, 해당 Method에 맞는 매개변수를 넣어야함.
▷Type의 추론이 가능한 경우, 생략 가능함.
▷매개변수가 0개인경우 ()를, 여러 개인 경우 ,를 통해 구분한다.
▶Function Body: 실행할 함수들
▷->를 통해 Function Body를 특정한다.
▷여러 줄일 경우에는 {}를 통해 묶는다.
▶Return: 반환할 값
▷Function Body에 return문을 추가하면, 반환할 값을 지정할 수 있다.
▷return값을 계산하기 위한 한 줄의 간단한 식일 경우, return을 생략 가능하다.
▶외부 변수의 사용 (Variable Capture)
▷외부의 변수에 Access하여 값을 읽어올 수 있다.
▷읽은 시점을 기준으로 고정된다. (Capture)
▷effetively final인 변수만을 가져올 수 있다.
▷effectively final: 유사 final, 해당 변수가 선언 후에 바뀌지 않으면 effectively final이며, final 취급을 받는다.
▷Local Varable: 지역 변수를 가져올 수 있다.
▷Instance Variable: lambda를 만든 객체를 가져올 수 있다.
▷Static Variable: Static 변수를 가져올 수 있다.
▶Method Reference
▷하나의 메소드를 호출하는 간단한 lambda expression은 Method를 reference해서 더 간단히 표현 가능하다.
'컴퓨터 언어 > java' 카테고리의 다른 글
Process (0) | 2020.11.23 |
---|---|
Exception (0) | 2020.11.19 |
Collection (0) | 2020.11.16 |
Interface (0) | 2020.11.16 |
Inheritance (0) | 2020.11.14 |