더북(TheBook)

서로 다른 패키지에 있는 일부 선언의 이름이 똑같을 수도 있다. 이런 이름들을 한 파일에서 쓰려면 어떻게 해야 할까? 예를 들어 app.util.fooapp.util.bar 패키지에 readInt() 함수가 들어있다고 하자. 이들을 모두 임포트하는 것은 도움이 되지 않는다.

import app.util.foo.readInt
import app.util.bar.readInt
fun main() {
  val n = readInt() // 오류: 두 가지 readInt() 중에 하나를 선택할 수 없음
}

이 둘을 구분하려면 항상 전체 이름을 사용해야 한다. 하지만 코틀린은 임포트 별명(alias)이라는 더 나은 해법을 제공한다. 이 기능을 사용하면 임포트한 선언에 새 이름을 부여할 수 있다. 그리고 이 새 이름은 임포트 디렉티브가 있는 파일 전체 영역에서 유효하다.

import foo.readInt as fooReadInt
import bar.readInt as barReadInt
fun main() {
  val n = fooReadInt()
  val m = barReadInt()
}

또 다른 형태의 임포트로 어떤 영역에 속한 모든 선언을 한꺼번에 임포트할 수 있다. 전체 이름 뒤에 *를 붙이면 된다. 다음과 같이 이 구문은 자바에서 같은 기능을 하는 임포트 문과 꽤 비슷하다.

import kotlin.math.* // kotlin.math 패키지 안에 있는 모든 선언을 임포트
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.