Папки и пакеты в Kotlin
Директива package задаёт логическое имя,
а не создаёт папки сама по себе. Тем не менее
в проектах на JVM принято, чтобы путь к файлу
.kt повторял пакет: каждая часть имени
пакета - отдельная папка, имя файла может быть
любым (часто совпадает с главным классом внутри).
Пакет app.site.users для исходников обычно
лежит по пути app/site/users/ от корня
каталога с Kotlin-файлами (в IntelliJ это
src/main/kotlin/):
package app.site.users
class User
Точки в объявлении package соответствуют
вложенным каталогам, а не отдельным ключевым
словам языка: одна строка package admin.tools
означает пакет с двумя уровнями, а не «пакет
внутри другого объявления».
Если файл лежит не там, где ожидает структура
пакета, IDE подсветит несоответствие. Компилятор
ориентируется на строку package в файле,
а не на имя папки, но расхождение мешает
навигации и команде.
Несколько файлов с одним и тем же package
объединяются в один пакет: классы из разных
файлов видят друг друга по короткому имени,
если они public (об этом подробнее
в уроке про видимость).
package app.site.users
class User
package app.site.users
class UserList {
fun first(): User = User()
}
Пусть исходники проекта лежат в каталоге
src/main/kotlin/. Опишите словами полный
путь к файлу, в котором должен находиться
класс Order с пакетом shop.orders.
Пусть в проекте есть каталог demo/tools/.
Создайте в нём файлы Helper.kt и
Formatter.kt так, чтобы оба файла
принадлежали одному package demo.tools.
В классе Formatter добавьте метод,
который возвращает новый объект Helper.