当前位置: 首页 > 知识库问答 >
问题:

使用主构造函数时的静态编程语言getter/setter

何星鹏
2023-03-14

这个例子来自我正在学习的一门Kotlin课程:

class Car {
    var speed: Int = 0
        get() = field 
        set(value) {
            field = value
        }
}

如果我喜欢使用这样的主构造函数:

class Car(var speed: Int)

在这种情况下,我必须如何编写getter/setter?

共有3个答案

丁慈
2023-03-14

属性语法-

var <propertyName>[: <PropertyType>] [= <property_initializer>]
    [<getter>]
    [<setter>]

在这里,属性初始值设定项、getter和setter是可选的。如果可以从初始值设定项推断属性类型,我们也可以省略它。只读或不可变属性声明的语法与可变属性声明有两种不同:以val而不是var开头,并且不允许setter。

在kotlin中,val仅用于读取方式getter,而var用于notgetter()setter()

class Company {
var name: String = "Defaultvalue"
}

上面的代码等同于下面的代码

class Company {
    var name: String = "defaultvalue"
        get() = field                     // getter
        set(value) { field = value }      // setter
}

如果要将数据保存在车内,也可以使用kotlin数据类。所以您不需要定义getter和setter。

data class Car(var speed: Int)

更多检查https://kotlinlang.org/docs/reference/properties.html#getters-和setters

穆子琪
2023-03-14

您可以使用构造函数中的值初始化属性:

class Car(speed: Int) {
    var speed: Int = speed
        get() = field
        set(value) {
            field = value
        }
}
淳于涛
2023-03-14

不能在构造函数内编写getter/setter,可以执行以下操作:

  1. 在类内创建变量,其值取自构造函数
class Car(speed: Int) {
    var speed = speed
        get() = field 
        set(value) {
            field = value
        }
}
class Car(@JvmField private var speed: Int) {
    fun getSpeed() = speed
    fun setSpeed(value: Int) { speed = value }
}
 类似资料:
  • 我在静态编程语言中扩展ArrayAdapter时遇到了问题。 这里的代码: 编辑与ArrayAdapter扩展无关。我的问题是构装师的理解。

  • 我是Kotlin开发的新手,我不知道如何处理这个问题。我将以下Kotlin数据类映射到MongoDB集合(Spring data MongoDB): 我想覆盖默认的 id 获取器并返回一个字符串而不是对象 Id。似乎“id”字段名称无法更改,因为我收到消息“不允许自定义id属性的字段名称!自定义名称不会被考虑!“,因此我无法使用始终建议的_id解决方案。 如何才能做到这一点?我错过了什么吗?

  • 我知道内联函数可能会提高性能 编译器可以发出以下代码,而不是为参数创建函数对象并生成调用。(来源) 但是我发现没有kotlin为一个非内联函数创建的函数对象。为什么?

  • 我在kotlin文件中定义了这个函数。 想这样从Java调用它 随着 但它给了我 我意识到lambda函数的参数似乎是< code >列表 如果我把类转换成java,我可以很容易地用lambda回调函数调用那个函数。 我做错了什么

  • 我正在使用Kotlin开发应用程序。在我的应用程序中包含带有的,因此我实现了这两个tabs.when我移动到另一个活动并编译到制表符查看活动,应用程序获得fsource停止,显示在错误下方。 java.lang.RuntimeException:无法启动活动ComponentInfo{com.crypto.wallet/com.crypto.wallet.activities.MainActivi

  • 本文向大家介绍C#静态构造函数?相关面试题,主要包含被问及C#静态构造函数?时的应答技巧和注意事项,需要的朋友参考一下 最先被执行的构造函数,且在一个类里只允许有一个无参的静态构造函数 执行顺序:静态变量>静态构造函数>实例变量>实例构造函数