Пакеты и импорты в Kotlin

Исходный файл может начинаться с объявления пакета:

package org.example

fun printMessage() { /*...*/ }
class Message { /*...*/ }

// ...

Все содержимое (например, классы и функции) исходного файла содержатся в объявленном пакете. Итак, в приведенном выше примере полное имя printMessage() - org.example.printMessage, а полное имя Message - org.example.Message.

Если пакет не указан, содержимое такого файла принадлежит пакету по умолчанию, который не имеет имени.

Импорты по умолчанию

Ряд пакетов импортируется в каждый файл Kotlin по умолчанию:

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.* (since 1.1)
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

Дополнительные пакеты импортируются в зависимости от целевой платформы:

JVM:
    java.lang.*
    kotlin.jvm.*

JS:
    kotlin.js.*

Импорты

Помимо импорта по умолчанию, каждый файл может содержать свои собственные директивы импорта.

Мы можем импортировать одно имя, например,

import org.example.Message // Сообщение теперь доступно без квалификации

или все доступное содержимое области (пакет, класс, объект и т. д.):

import org.example.* // все в 'org.example' становится доступным

Если есть конфликт имен, мы можем устранить неоднозначность, используя ключевое слово as для локального переименования конфликтующего объекта:

import org.example.Message // Message доступно

import org.test.Message as testMessage // testMessage означает 'org.test.Message'

Ключевое слово import не ограничивается импортом классов; Вы также можете использовать его для импорта других объявлений:

  • функции и свойства верхнего уровня;
  • функции и свойства, объявленные в объявлениях объектов;
  • enum константы.

Видимость объявлений верхнего уровня

Если объявление верхнего уровня помечено как private, оно является private по отношению к файлу, в котором оно объявлено.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Строки в Kotlin

Наследование в Kotlin

Возврат и прыжки в Kotlin