在其他地方Kotlin访问支持领域?

我发现它只能访问set中的后台字段或get。是否有任何方法可以在类的其他地方访问后台字段? 例如。

var width:Int=0 get() { return field*10; } set(value) { field=value/10; } 

我想获得真正的价值,但不是它的倍数10

当我使用C#,没有字段的关键字,所以总是需要声明一个新的variables来存储真实的数据。在前面的例子中,它将是

 private var _width=0; var width:Int get() { return _width*10; } set(value) { _width=value/10; } 

所以如果我想访问类中的实际价值,我可以访问_value。 但是在kotlin中,有没有这些详细的声明可以访问后台?

Kotlin,你可以使用支持属性

备份属性

如果你想做一些不适合这个“隐式后台”方案的东西,你总是可以回退到有一个支持属性:

 private var _table: Map? = null public val table: Map get() { if (_table == null) { _table = HashMap() // Type parameters are inferred } return _table ?: throw AssertionError("Set to null by another thread") } 

在所有方面,这与Java中的一样,因为访问具有默认获取器和设置器的私有属性被优化,所以不引入函数调用开销。

不可以。您的C#示例在Kotlin中正常工作,它被称为支持属性 。