8장. 최상위 함수에 대한 정적 메서드
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
독립형 함수는 소프트웨어의 기본 구성 요소 중 하나로, Java에서는 클래스에서 메서드로 선언해야 하지만 Kotlin에서는 최상위 엔티티로 선언할 수 있습니다. 언제 최상위 함수를 선호해야 하며, Java에서 어떻게 리팩터링할 수 있을까요?
Java 정적
Java 프로그램의 모든 값과 함수는 클래스에 속해야 하며, 해당 클래스의 멤버입니다. Java는 멤버 값 필드와 멤버 함수 메서드를 호출합니다. 기본적으로 필드 값은 클래스의 인스턴스마다 다른 값을 갖습니다. 메서드도 호출되는 인스턴스의 상태에 액세스할 수 있다는 점에서 인스턴스별입니다.
하지만 필드를 static 로 표시하면 클래스의 모든 인스턴스 간에 공유됩니다. 정적 메서드는 이 공유 상태(및 다른 클래스에서 보이는 정적 필드)에만 액세스할 수 있지만, 이러한 제한 대신 클래스의 인스턴스 없이도 메서드를 호출할 수 있습니다.
Java를 단순화하기 위해 언어 설계자는 모든 코드와 데이터를 클래스에 묶었습니다. 클래스 범위의 정적 상태가 있으므로 클래스 범위의 정적 메서드가 필요합니다. 독립형 데이터와 함수를 추가할 수도 있었지만 정적 필드와 메서드가 충분합니다. 언어에 옵션이 있다면 개발자는 그 중에서 선택해야 하며, 선택이 적을수록 좋습니다. 설계자는 이 언어 설계 결정을 Java 가상 머신으로 전달했고, 그 결과 상위 수준의 코드나 데이터를 표현할 방법이 없게 되었습니다.
3장에서 살펴본 정적 구문 분석 메서드가 있는 이메일 클래스와 같이 같은 유형에서 작동하는 비정적 메서드와 정적 메서드가 모두 있는 클래스가 있는 경우도 있습니다. 하지만 종종 정적 메서드로만 구성된 클래스가 있습니다. 공유할 정적 상태가 없는 경우, 이러한 메서드는 실제로는 java.util.Collections 클래스의 ...