Файл Kotlin против класса. Какая разница?

Просто начал использовать Kotlin и создал некоторые действия как Kotlin Files. Они работают, но все же я хочу знать, в чем разница между созданием Файла и Класса.

Ответ 1

icon Kotlin Class: Android Studio отображает его без расширения, если файл содержит ТОЛЬКО ОДИН класс.

В отличие от Java, Kotlin позволяет размещать определенные вещи вне класса, такие как:

  • функции расширения
  • константы

Поэтому, если вы добавите в файл какой-либо из перечисленных выше или другой класс, Android Studio изменит его на "Kotlin File":

icon с расширением .kt

Удаление вышеупомянутых дополнений, снова покажет файл как "Kotlin Class"

Ответ 2

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

Ответ 3

Как я вижу, у файла Kotlin есть много классов внутри него. Но класс Kotlin имеет один класс с этим именем, но только наблюдение.

Ответ 4

Да, если вы определите более одного класса, он будет автоматически преобразован в файл, в противном случае он будет автоматически преобразован в класс. Обычно я думаю, что если вам нужно определить некоторые переменные или методы, на которые можно напрямую ссылаться, вы можете поместить их в файл.

Ответ 5

Вот ответ из официальной документации:

Если файл Kotlin содержит один класс (потенциально со связанными объявлениями верхнего уровня), его имя должно совпадать с именем класса с добавлением расширения .kt. Если файл содержит несколько классов или только объявления верхнего уровня, выберите имя, описывающее содержимое файла, и присвойте файлу соответствующее имя. Используйте горб верблюда с заглавной первой буквой (например, ProcessDeclarations.kt).

Имя файла должно описывать, что делает код в файле. Поэтому вам следует избегать использования бессмысленных слов, таких как "Util" в именах файлов.

поэтому в основном файл может -for instance- содержать только (helper-) функции без какого-либо объявления класса.