Где определяется переменная supportFragmentManager?

Я использую Kotlin для разработки. Когда я добрался до раздела фрагментов официального руководства по Android, я наткнулся на supportFragmentManager. Которая доступна для использования в качестве переменной в Kotlin, тогда как в java мы можем вызвать ее эквивалентный методgetSupportFragmentManager().

Интересно, где supportFragmentManager переменная определена, поскольку я не видел ничего похожего на объявление переменной с таким именем, однако щелчок по этой переменной привел меня к следующему методу внутри класса fragmentActivity.java.

/**
 * Return the FragmentManager for interacting with fragments associated
 * with this activity.
 */
public FragmentManager getSupportFragmentManager() {
    return mFragments.getSupportFragmentManager();
}

Как этот метод стал доступен как переменная в Kotlin, тогда как в java мы можем получить доступ как обычный метод? Любая помощь будет оценена.

2 ответа

Решение

Собственно, в Котлине при звонке supportFragmentManager это не переменная, любой метод Java содержит get префикса (без аргумента) в методе в Kotlin он будет вызываться как переменная без get слово

Методы, которые следуют соглашениям Java для геттеров и сеттеров (методы без аргументов с именами, начинающимися с get, и методы с одним аргументом с именами, начинающимися с set), представлены в Kotlin как свойства. Логические методы доступа (где имя получателя начинается с is, а имя установщика начинается с set) представлены как свойства, которые имеют то же имя, что и метод получения.

Подробнее здесь

Это что-то вроде метода получения и установки в Kotlin. Не нужно описыватьgetProperty() а также setProperty() метод доступа / обновления значения свойства.

Вы можете узнать больше о том, как это работает, на примере из этого вопроса / ответов.

Надеюсь, это вам поможет. Удачного кодирования..!

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