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

标签 android kotlin

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

webview.settings.cacheMode = WebSettings.LOAD_NO_CACHE

但不是这个:

webview.settings.appCacheEnabled = false

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

webview.settings.setAppCacheEnabled(false)

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

最佳答案

根据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.

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

实际上,值得注意的是,在创建合成属性时,Kotlin 不仅会查找遵循 Java 约定的 setter 和 getter 方法,而且还会从 getter 中推断属性的类型,以防子类重写返回的 getter 方法比其父类(super class)更具体的类型。

关于android - Kotlin - 使用属性访问语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112580/

相关文章:

java - 私有(private)字符串属性在反编译的 .java 类 Kotlin 中可以为空

java - 无法解析 Intent 中的构造函数

java - 以编程方式重新排序 RelativeLayout

Java : how to call methods with the same name in different objects instantiated from different classes?

java - 确保从 InputStream 读取正确的数据

java - 打开跟踪文件时出错。没有那个文件或目录 [2]

android - 安卓棋盘

Kotlin 迭代列表列表

android - obj.apply{ func1() } 的结果与 obj.func1() 不同

java - 在混合 Java/Kotlin 项目中使用 Dagger 2 的 Maven 配置