Просто начал использовать Kotlin и создал некоторые действия как Kotlin Files. Они работают, но все же я хочу знать, в чем разница между созданием Файла и Класса.
Файл Kotlin против класса. Какая разница?
Ответ 1
Kotlin Class: Android Studio отображает его без расширения, если файл содержит ТОЛЬКО ОДИН класс.
В отличие от Java, Kotlin позволяет размещать определенные вещи вне класса, такие как:
- функции расширения
- константы
Поэтому, если вы добавите в файл какой-либо из перечисленных выше или другой класс, Android Studio изменит его на "Kotlin File":
Удаление вышеупомянутых дополнений, снова покажет файл как "Kotlin Class"
Ответ 2
Единственное различие заключается в том, что при создании файла создается файл без классов, а создание класса создает файл с одним классом. Затем вы можете добавить в файл дополнительные классы или удалить классы или внести любые другие изменения - конечный результат не зависит от того, как был создан файл.
Ответ 3
Как я вижу, у файла Kotlin есть много классов внутри него. Но класс Kotlin имеет один класс с этим именем, но только наблюдение.
Ответ 4
Да, если вы определите более одного класса, он будет автоматически преобразован в файл, в противном случае он будет автоматически преобразован в класс. Обычно я думаю, что если вам нужно определить некоторые переменные или методы, на которые можно напрямую ссылаться, вы можете поместить их в файл.
Ответ 5
Вот ответ из официальной документации:
Если файл Kotlin содержит один класс (потенциально со связанными объявлениями верхнего уровня), его имя должно совпадать с именем класса с добавлением расширения .kt. Если файл содержит несколько классов или только объявления верхнего уровня, выберите имя, описывающее содержимое файла, и присвойте файлу соответствующее имя. Используйте горб верблюда с заглавной первой буквой (например, ProcessDeclarations.kt).
Имя файла должно описывать, что делает код в файле. Поэтому вам следует избегать использования бессмысленных слов, таких как "Util" в именах файлов.
поэтому в основном файл может -for instance- содержать только (helper-) функции без какого-либо объявления класса.