더북(TheBook)

2.2.9 유틸리티 클래스 인스턴스화 방지하기

자바에서는 정적 메서드만 포함된 유틸리티 클래스를 만들어 사용하는 경우가 자주 있다. 그런 경우에 보통은 클래스 인스턴스화를 금지한다. 클래스 인스턴스화를 금지하려면 자바에서는 일반적으로 생성자를 비공개로 만들고 코틀린에서는 클래스 밖의 패키지 수준에서 함수를 만들면 된다. 패키지 수준에서 함수를 만들려면 아무 이름으로나 된 파일을 하나 만들고 첫 줄에 패키지 선언을 넣는다. 패키지 선언 다음에는 어떤 클래스에도 포함되지 않는 함수를 정의하면 된다.

package com.acme.util

fun create(xml: String): Person {
    ...
}

전체 경로를 사용해 이 함수를 다음처럼 호출할 수 있다.

val person = com.acme.util.create(someXmlString)

짧은 이름을 사용하고 싶으면 패키지를 임포트하면 된다.

import com.acme.util.*

val person = create(someXmlString)

코틀린은 JVM에서 돌아가므로 패키지 수준에서 정의한 코틀린 함수를 자바 쪽에서 호출할 방법이 있어야 한다. 이에 관해서는 부록 A를 참고하라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.