Kotlin 的等效属性包装器是什么:
@propertyWrapper
struct Foo {
var wrappedValue: String {
get {
return "Test
}
}
}
@Foo var test:字符串
最佳答案
在 Kotlin 中,documentation 有多个选项了解如何向属性添加自定义行为。基本上有两个选项:自定义 setter/getter 和 Delegated Properties .
Kotlin 中可能有所不同的一些事情:
属性为
val
或var
。val
就像Java中的final
,只能赋值一次,var
可以重新赋值。这两种类型都可以有自定义 getter。
var
可以有自定义 setter 。如果您想要一个支持字段,Kotlin 会为您提供一个。只需在 setter 或 getter 中使用关键字
field
即可。Kotlin 属性没有隐式默认值。您必须在构造函数中(或通过
init
block )或在=
之后的声明处进行初始化。某些属性实际上是计算出来的,但实际上并不存储任何内容。在这种情况下,没有后备
字段
,并且不需要(或允许)初始化程序。
示例:
class Dog {
// Must have initial value, default getter and setter. Value can come from constructor.
val isNice: Boolean = true
set(value) { ... } // This produces an error, no setters on vals
// Must have initial value, default getter
var age: Int = 0
set(value) { if (value >= 0) field = value }
// Value is just computed, has no field and cannot have initial value
var ageInDogYears: Int
get() = age * 7
set(value) { age = value / 7 }
}
关于java - Kotlin:相当于 Swift 的属性包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338119/