Пакеты и импорты в 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 по отношению к файлу, в котором оно объявлено.
Читайте также:
Комментарии
Отправить комментарий