是否仅为 public 属性创建了支持 属性?
Does a backing property created for only public properties?
首先我阅读了link:
Backing Fields
我不确定我是否从link中理解了,虽然我看到了一个例子:
是否会为非 public 属性 创建支持字段?
这与public/private无关。
总是创建支持字段,除非有自定义 getter(和 var
的 setter)并且它(两者都没有)使用 field
。支持字段是存储 属性 值的唯一方式,无论它是否为 public。当getter和setter都没有引用field
时,才不会生成
在该支持属性示例(在下面复制)中,_table
属性 有一个支持字段,因为它使用默认的 属性 实现。 table
属性 没有支持字段,因为它在 getter.
中没有使用支持字段
private var _table: Map<String, Int>? = null
public val table: Map<String, Int>
get() {
if (_table == null) {
_table = HashMap() // Type parameters are inferred
}
return _table ?: throw AssertionError("Set to null by another thread")
}
首先我阅读了link: Backing Fields
我不确定我是否从link中理解了,虽然我看到了一个例子:
是否会为非 public 属性 创建支持字段?
这与public/private无关。
总是创建支持字段,除非有自定义 getter(和 var
的 setter)并且它(两者都没有)使用 field
。支持字段是存储 属性 值的唯一方式,无论它是否为 public。当getter和setter都没有引用field
时,才不会生成
在该支持属性示例(在下面复制)中,_table
属性 有一个支持字段,因为它使用默认的 属性 实现。 table
属性 没有支持字段,因为它在 getter.
private var _table: Map<String, Int>? = null
public val table: Map<String, Int>
get() {
if (_table == null) {
_table = HashMap() // Type parameters are inferred
}
return _table ?: throw AssertionError("Set to null by another thread")
}