【问题标题】:Why is this kotlin assignment possible (switchButton.isChecked = true)为什么这个 kotlin 分配可能(switchButton.isChecked = true)
【发布时间】:2020-10-16 14:21:53
【问题描述】:

我正在学习在 kotlin 中开发 android 应用程序。我正在使用安卓工作室 4.0.1。我将一个开关拖到一个布局上,并默认将其状态设置为 true

switch.setChecked(true)

但 IDE 建议我将其更改为

switch.isChecked()

,这不是我想要的。那我刚好进了

switch.isChecked = true 

它奏效了。 我的问题是 isChecked 是一个函数,我们不会那样调用它。但不知何故,这奏效了。为什么?

非常感谢。

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    这是来自Calling Java code from Kotlin: Getters and Setters的引述:

    遵循 Java 的 getter 和 setter 约定的方法 (名称以get 和单参数开头的无参数方法 名称以set) 开头的方法表示为 科特林。 Boolean 访问器方法(getter 名称开始的地方 is 和 setter 的名称以 set 开头)表示为 与 getter 方法同名的属性。

    由于Switch 是一个用Java 创建的类,并且具有setCheckedisChecked 方法,Kotlin 可以为您合成一个isChecked 属性,这样从Kotlin 中访问它会感觉更惯用:

    switch.isChecked = true
    println(switch.isChecked) // prints "true"
    

    【讨论】:

    • 非常感谢。我希望 Google 能尽快摆脱 Java。
    • 不客气!我认为 Java 不会很快消失,Android SDK 是一个巨大的框架,用 Kotlin 重写它需要做很多工作。考虑到 Java 和 Kotlin 之间的互操作性非常好,这也是多余的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2010-10-07
    • 2017-05-05
    • 2015-09-17
    • 2016-04-06
    • 1970-01-01
    相关资源
    最近更新 更多