First-class citizen
1급 객체의 조건 3가지
- 변수나 데이타에 할당 할 수 있어야 합니다.
- 객체의 인자로 넘길 수 있어야 합니다.
- 객체의 리턴값으로 리턴 할수 있어야 합니다.
자바에서의 1급 객체란?
- JAVA에서는 함수가 1급 객체에 해당하지 않습니다. Kotlin, JavaScript 등의 언어에서는 변수에 함수를 할당하고 사용할 수 있지만 JAVA는 불가능합니다.
- JAVA의 Lambda는 메서드가 1개만 존재하는 인터페이스/클래스를 통해, 마치 함수를 전달하는 것처럼 여겨서, 함수를 1급 객체로 취급하지 않는 JAVA의 단점을 어느정도나마 해결한 것이라고 볼 수 있습니다.
- 람다식을 자바 8에서는 함수형 인터페이스로 정의합니다. 함수형 인터페이스는 메서드가 하나만 정의되어있다고 약속한 인터페이스입니다. 이 약속을 통해서 이 인터페이스를 구현한 객체에는 함수 하나만 있다고 믿고 자바는 마치 함수처럼 코드를 작성하고 표현할 수 있는 것입니다.