这个例子来自我正在学习的一门Kotlin课程:
class Car {
var speed: Int = 0
get() = field
set(value) {
field = value
}
}
如果我喜欢使用这样的主构造函数:
class Car(var speed: Int)
在这种情况下,我必须如何编写getter/setter?
属性语法-
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
您可以使用构造函数中的值初始化属性:
class Car(speed: Int) {
var speed: Int = speed
get() = field
set(value) {
field = value
}
}
不能在构造函数内编写getter/setter,可以执行以下操作:
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#静态构造函数?时的应答技巧和注意事项,需要的朋友参考一下 最先被执行的构造函数,且在一个类里只允许有一个无参的静态构造函数 执行顺序:静态变量>静态构造函数>实例变量>实例构造函数