본문 바로가기

개발/JAVA

1급 객체(First-class citizen) 란?

요즘, 함수형 프로그래밍이 떠오르면서 1급 객체(First-class citizen)란 말을 많이 듣게 되는 것 같다. 1급 객체의 특징은 아래와 같다. 아래 3 가지조건을 충족한다면 1급 객체라고 할수 있다.

 

1급 객체의 조건 3가지

  1. 변수나 데이타에 할당 할 수 있어야 한다.
  2. 객체의 인자로 넘길 수 있어야 한다.
  3. 객체의 리턴값으로 리턴 할수 있어야 한다.

 

주로 사용하고 있는 언어인 JAVA에서는, 함수가 1급 객체에 해당하지 않는다. Kotlin, JavaScript 등의 언어에서는 변수에 함수를 할당하고 사용할 수 있다. 하지만, JAVA는 불가능하다.

 

그렇지만, JAVA의 Lambda는 그렇다면 어떻게 되는것인가?라는 질문을 던질 수 있다.

이는 메서드가 1개만 존재하는 인터페이스/클래스를 통해, 마치 함수를 전달하는 것처럼 여겨서, 함수를 1급 객체로 취급하지 않는 JAVA의 단점을 어느정도나마 해결한 것이라고 볼 수 있다.