Вернуть экземпляр фрагмента в Kotlin @JvmStatic

Котлин в стандарте генерирует что-то вроде этого

   @JvmStatic
        fun newInstance(param1: String, param2: String) =
                MyFragment().apply {
                    arguments = Bundle().apply {
                        putString(ARG_PARAM1, param1)
                        putString(ARG_PARAM2, param2)
                    }
                }

Что делают @JvmStatic?

Мы можем сделать что-то вроде:

fun getInstance() = MyFragment()

и эта функция делает то же самое (кроме параметров)

Итак, @JvmStatic бесполезен?

Это имеет значение, когда вы вызываете метод из Java. Это в документации.

EpicPandaForce 27.06.2018 00:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
238
1

Ответы 1

Для Kotlin это «не имеет значения», но если вы используете это из Java, он будет «переведен» в статический метод. В kotlin нет эквивалентов статических методов, поэтому это способ сообщить JVM, что при использовании из java это будет преобразовано в статический метод.

Из документы:

Specifies that an additional static method needs to be generated from this element if it's a function.

Другие вопросы по теме