iForests
iForests

Reputation: 6949

Kotlin - Use property access syntax issue

Well I have a WebView, and the following property setting works:

webview.settings.cacheMode = WebSettings.LOAD_NO_CACHE

but not this one:

webview.settings.appCacheEnabled = false

Instead, I have to use the old way:

webview.settings.setAppCacheEnabled(false)

Can you tell me why? Thanks.

Upvotes: 2

Views: 2389

Answers (1)

Mikhail Olshanski
Mikhail Olshanski

Reputation: 770

According to the official documentation:

Note that, if the Java class only has a setter, it will not be visible as a property in Kotlin, because Kotlin does not support set-only properties at this time.

If you look at the WebSettings abstract class, you'll see it only has public abstract void setAppCacheEnabled(boolean flag); method and no getters for this property, hence Kotlin doesn't allow using a property access syntax here.

Actually, it's worth noting that while creating synthetic property, not only Kotlin looks for setter and getter methods that follow Java conventions, but it also infers property's type from the getter which comes in play in case of subclasses overriding getter methods that return more specific type than their superclasses.

Upvotes: 4

Related Questions