TL; DR
Вы не можете.
Длинный ответ
Похоже, у вас неправильное представление о том, чтокласс или объект каким-то образом добавляет некоторые проблемы с памятью в ваше приложение.
Это не так.
На самом деле, если вы работаете на JVM, ваш журналФункция будет компилироваться следующим образом:
public final class UtilsKt {
public static final void log(@NotNull String message) {
Intrinsics.checkParameterIsNotNull(message, "message");
System.out.println(message);
}
}
Вы можете нажать Meta+Shift+A
на IntelliJ, а затем сделать Show Kotlin bytecode
, если вы мне не верите.
Кроме того, вы, кажется, веритедолжна быть возможность явно ссылаться на имя файла в импорте Kotlin.Нет способа сделать это.Файлы почти не имеют отношения к скомпилированному коду Kotlin (это своего рода случайность, когда имя файла фактически отражается в сгенерированном имени класса Java, как показано выше).
Пакеты в Kotlin обычно располагаются так, чтобы соответствоватькаталоги, в которых они находятся ... но это не обязательно, кстати.Вы можете написать классы в нескольких пакетах в одном каталоге.Это означает, что имена файлов и даже имена каталогов на самом деле не влияют на типы и импорт среды выполнения Kotlin.
Если вы беспокоитесь о невозможности быстро узнать, где объявлены ваши функции, я предлагаю вам использовать Javaсоглашение о вызове файлов по имени класса, который в нем живет, а затем оборачивает все функции в object
(с этим абсолютно не связаны затраты времени выполнения).
package app.utils
object MyUtils {
fun log(message:String) => println(message)
}
File: app / utils / MyUtils.kt
Но обратите внимание, что в любой приличной среде IDE переход к объявлению функции тривиален (обычно Meta + B в IntelliJ) независимо от того, в каком файле он находитсяв, поэтому эта проблема обычно не возникает при работе с IDE.