伴随对象中的val arrayListOf()返回无效值



我有代码:

class DrawerViewModel : ViewModel() {
fun updateDrawerProfiles() {
val example = DrawerUtils.exampleProfile
example.add(  DrawerAccount(3, "NEW Test") )
setDrawerProfiles(example)
}
}
class DrawerUtils {
companion object {
val exampleProfile = arrayListOf(
DrawerAccount(1, "Facebook"),
DrawerAccount(2, "Google")
)
}
}

[运行示例代码](https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS4zLjYxIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsImpzQ29kZSI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiXG5cbmZ1biBtYWluKGFyZ3M6IEFycmF5PFN0cmluZz4pIHtcbiAgICBwcmludGxuKERyYXdlclZpZXdNb2RlbCgpLnVwZGF0ZURyYXdlclByb2ZpbGVzKCkuc2l6ZSApXG4gICAgcHJpbnRsbihEcmF3ZXJWaWV3TW9kZWwoKS51cGRhdGVEcmF3ZXJQcm9maWxlcygpLnNpemUgKVxuICAgIHByaW50bG4oRHJhd2VyVmlld01vZGVsKCkudXBkYXRlRHJhd2VyUHJvZmlsZXMoKS5zaXplIClcbn1cblxuY2xhc3MgRHJhd2VyVmlld01vZGVsKCkge1xuXG4gICAgZnVuIHVwZGF0ZURyYXdlclByb2ZpbGVzKCkgOiBBcnJheUxpc3Q8RHJhd2VyQWNjb3VudD4ge1xuICAgICAgICB2YWwgZXhhbXBsZSA9IERyYXdlclV0aWxzLmV4YW1wbGVQcm9maWxlXG4gICAgICAgIGV4YW1wbGUuYWRkKCAgRHJhd2VyQWNjb3VudCgzLCBcIk5FVyBUZXN0XCIpIClcbiAgICAgICAgcmV0dXJuIGV4YW1wbGVcbiAgICB9XG5cbn1cblxuY2xhc3MgRHJhd2VyVXRpbHMge1xuICAgXG4gICAgY29tcGFuaW9uIG9iamVjdCB7XG5cbiAgICAgICAgdmFsIGV4YW1wbGVQcm9maWxlID0gYXJyYXlMaXN0T2YoXG4gICAgICAgICAgICBEcmF3ZXJBY2NvdW50KDEsIFwiRmFjZWJvb2tcIiksXG4gICAgICAgICAgICBEcmF3ZXJBY2NvdW50KDIsIFwiR29vZ2xlXCIpXG4gICAgICAgIClcbiAgICAgIFxuICAgIH1cbn1cbmRhdGEgY2xhc3MgRHJhd2VyQWNjb3VudCh2YXIgaWQ6IEludCwgdmFyIG5hbWU6IFN0cmluZyApXG5cbiJ9)

当我运行几次函数updateDrawerProfiles时,会返回列表的有效大小。RUN x3updateDrawerProfiles((|输出:3.4.5

应该是3.3.3.

当我将函数updateDrawerProfiles移到伴随对象之外时,这是可以的。为什么会这样?

应该是3 3 3。

错误。

DrawerUtils的伴星是辛格尔顿。创建一次,对象就会保持存在。您向exampleProfile添加了3次新值,因此大小增长到3、4和5是有意义的。

请阅读这个主题https://kotlinlang.org/docs/tutorials/kotlin-for-py/objects-and-companion-objects.html

最新更新