Search
Duplicate

Java - 일급 객체

글감
Java
작성자
작성 일자
2024/02/08 06:43
상태
완료
공개여부
공개
Date
생성자
작업자

일급 객체란

일급 객체의 일급의 의미는 사용할 때 다른 요소들과 아무런 차이가 없다는 것을 뜻한다.
일반적으로 아래의 3가지 조건을 충족할 때 일급객체라 부른다.
모든 일급 객체는 변수나 데이터를 담을 수 있어야 한다.
모든 일급 객체는 함수의 파라미터로 전달 할 수 있어야 한다.
모든 일급 객체는 함수의 반환값으로 사용할 수 있어야 한다.
많이 사용되는 언어 중 Python, JavaScript가 일급 객체 언어이고, c, c++, pascal은 아니다. Java는 일급 객체 언어는 아니지만, 람다를 통해 일급 객체를 지원한다.
일급 객체를 지원하고 안하고는 좋고 나쁘다는 개념이 아니고, 일급 객체 특성은 함수형 프로그래밍의 중요한 포인트가 된다.

자바에서의 일급 객체

1.
변수나 데이터에 담을 수 있어야 한다.
자바 메소드는 변수나 데이터에 할당할 수 없다.
자바 람다 표현식은 변수나 데이터에 할당할 수 있다.
public class Main { public static void main(String[] args) { Consumer<String> c = (t) -> System.out.println(t); // 람다식을 인터페이스 타입 변수에 할당 c.accept("Hello World"); } }
Java
복사
2.
함수의 파라미터로 전달 할 수 있어야 한다.
자바 메소드는 매개변수로 할당할 수 없다.
자바 람다 표현식은 매개변수로 할당할 수 있다.
public class Main { // 메소드 매개변수로 람다 함수를 전달 public static void print(Consumer<String> c, String str) { c.accept(str); } public static void main(String[] args) { print((t) -> System.out.println(t) ,"Hello World"); } }
Java
복사
3.
함수의 반환값으로 사용할 수 있어야 한다.
자바 메소드는 함수의 반환값으로 사용할 수 없다.
자바 람다 표현식은 함수의 반환값으로 사용할 수 있다.
public class Main { public static Consumer<String> hello() { // 람다 함수 자체를 리턴함 return (t) -> { System.out.println(t); }; } public static void main(String[] args) { Consumer<String> c = hello(); c.accept("Hello World"); } }
Java
복사