Kotlin - использование синтаксиса доступа к свойствам - PullRequest
0 голосов
/ 02 ноября 2018

Хорошо, у меня есть WebView, и работает следующая настройка свойства:

webview.settings.cacheMode = WebSettings.LOAD_NO_CACHE

но не этот:

webview.settings.appCacheEnabled = false

Вместо этого я должен использовать старый способ:

webview.settings.setAppCacheEnabled(false)

Можете ли вы сказать мне, почему? Благодаря.

1 Ответ

0 голосов
/ 02 ноября 2018

Согласно официальной документации :

Обратите внимание, что если в классе Java есть только установщик, он не будет отображаться как свойство в Kotlin, поскольку в настоящее время Kotlin не поддерживает свойства только для набора.

Если вы посмотрите на абстрактный класс WebSettings, вы увидите, что у него есть только метод public abstract void setAppCacheEnabled(boolean flag); и нет методов получения этого свойства, поэтому Котлин не разрешает использовать здесь синтаксис доступа к свойству.

На самом деле, стоит отметить, что при создании синтетического свойства не только Kotlin ищет методы setter и getter, которые следуют соглашениям Java, но также выводит тип свойства из getter, который вступает в игру в случае подклассов, переопределяющих методы getter, которые возвращают более конкретный тип, чем их суперклассы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...