Kotlin 패키지, 가져오기 (Packages)

패키지

package 키워드는 패키지를 정의하여, 패키지 지정은 소스 코드의 맨 위에 넣는다.

package com.devkuma

fun foo() {}

class Item {}

// ...

소스 파일(클래스, 함수 등)의 모든 내용은 선언된 패키지에 포함되어 있다. 따라서 위에 예제에서 알 수 있듯이 foo()의 전체 이름 com.devkuma.foo이며, Item의 전체 이름 com.devkuma.Item이 된다.

만약 패키지가 지정되지 않으면, 파일의 내용은 이름이 없는 “default” 패키지에 속하게 된다.

기본 패키지

아래의 8개의 패키지는 기본적으로 임포트된다. 그러기에 별도의 임포트 없이 사용 가능하다.

* 는 ‘전부’를 뜻한다.

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

해당 플랫폼에 따라 추가 패키지를 가져온다.

JVM:

java.lang.*
kotlin.jvm.*

JS:

kotlin.js.*

imports (가져오기)

import 패키지를 가져온다. as 는 가져온 엔티티에 대해 별칭 붙인다.

디폴트 Import를 제외하고 몇몇 파일은 자신만의 import 명령어를 갖는다.

하나의 이름만 지정하여 import 할 수 있다.

import foo.Bar // Bar에 접근 가능하게 된다.

또는 어떤 범위(패키지, 클래스, 객체 등)의 모든 접근 가능하게 할 수 있다.

import foo.* // 'foo'내에 모두 접근이 가능하게 된다.

이름 충돌이있는 경우 as 키워드를 사용하여 충돌하는 엔티티를 국소적으로 이름을 변경하여 명확하게 할 수 있다.

import foo.Bar // Bar는 접근 가능하다.
import bar.Bar as bBar // bBar는 'bar.Bar'을 의미한다.

import 키워드는 클래스를 가져오기 위해 한정되는 것은 아니다. 다른 선언을 가져 오는데 사용할 수도 있다.

  • 최상위 함수 및 속성
  • 객체의 선언에서 선언된 함수와 속성
  • enum 정수

Java와 달리 Kotlin 다른 “import static” 구문을 제공하지 않는다. 모든 선언은 import 키워드로만 가져온다.

최상위 선언의 가시성

만약 최상위 선언에 private가 붙어 있으면, 그것이 선언된 소스 파일에 대해서 비공개이다.

참조