Kotlin-使用属性访问语法问题

时间:2018-11-02 04:10:16

标签: android kotlin

我有一个WebView,并且以下属性设置有效:

webview.settings.cacheMode = WebSettings.LOAD_NO_CACHE

但不是这个:

webview.settings.appCacheEnabled = false

相反,我必须使用旧方法:

webview.settings.setAppCacheEnabled(false)

你能告诉我为什么吗?谢谢。

1 个答案:

答案 0 :(得分:4)

根据official documentation

  

请注意,如果Java类只有一个setter,那么它在Kotlin中将不会显示为属性,因为Kotlin目前不支持仅设置属性。

如果您查看WebSettings抽象类,您会看到它仅具有public abstract void setAppCacheEnabled(boolean flag);方法并且该属性没有getter,因此Kotlin不允许在此处使用属性访问语法。 / p>

实际上,值得注意的是,在创建合成属性时,不仅Kotlin会寻找遵循Java约定的setter和getter方法,而且还会从getter推断属性的类型,以防子类覆盖返回的getter方法时起作用比其父类更具体的类型。