Open syoun602 opened 2 years ago
프로그래밍 언어의 핵심은 값을 바꾸는 것 → 이러한 값들은 일급(First Class) 값 또는 시민이다
자바 7(그리고 이전)의 자바 프로그래밍 언어는 다양한 구조체 (메서드, 클래스)가 값의 구조를 표현하는데 도움이 될 수 있었지만, 프로그래밍 실행동안 이러한 모든 구조체를 자유롭게 전달할 수 없었다. 이렇게 전달이 불가능한 구조체가 이급 시민이다.
자바 8부터는 이급 시민도 일급시민으로 바꿀 수 있는 기능이 추가됨.
메서드를 일급 시민으로 만든다면?
런타임에 메서드 전달이 가능 → 즉, 구조체를 자유롭게 전달 가능
메서드라는 구조체의 값을 다른 구조체에게 전달할 수 있게 됨
일급 시민의 조건
변수(variable)에 담을 수 있다
인자(parameter)로 전달할 수 있다
반환값(return value)으로 전달할 수 있다
자바의 일급 시민은 객체(일반, 참조 자료형)이다.
객체는 변수에 담을 수 있으며, 인자로 전달될 수 있고, 반환값으로도 전달될 수 있다.
하여 객체지향 프로그래밍의 메커니즘에 합당한 일급 시민이었는데, 프로그래밍 패러다임이 변하여 함수형 프로그래밍이 대두됨.
함수형 프로그래밍에서는 함수
자체가 일급 시민
함수 자체가 일급시민이 된다면?
고차 함수를 값으로 표현할 수 있음 → 특정 메서드의 작업 내용 및 결과를 2차, 3차로 고도화 가능
문제
자바8 에서는 왜 이급 시민인 메서드를 일급 시민으로 바꿀 수 있는 기능을 추가했을까?
선정 배경
책이 가장 크게 변화가 이뤄진 자바 8부터 설명하기 때문에 주요 변화에 대해서 알아보고자 해당 내용을 선정하게 되었다.
관련 챕터
[1장] 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?