【问题标题】:Best practice to access property in kotlin在 kotlin 中访问属性的最佳实践
【发布时间】:2017-12-14 08:40:52
【问题描述】:

我来自 Java 背景,第一次使用 Kotlin。对于大多数人来说,这将是一个基本问题,但它可能会帮助那些第一次开始使用 Kotlin 并来自 Java 背景的人

所以,假设我有 listadapter,我想在其中设置项目列表。我现在有两个选择。

1) 创建一个存储项目列表的私有属性,然后为其创建一个设置器,设置列表并调用 notifydatasetChanged()

2) 用set属性函数创建一个属性,然后像instance.property一样访问

以上两个选项在 Kotlin 中哪个是更好的选择。

【问题讨论】:

  • 为什么这个问题被否决了。我来自 java 并在 kotlin 中寻求最佳实践。那有什么问题。如果您投反对票,也请提及原因。
  • 理想情况下,您不要在 Kotlin 中使用 getter 和 setter。我会说你只使用classInstance.propertyName。要为其分配值,您可以执行以下操作:listadapter.items = itemsFromServer,然后调用 notifyDataSetChanged() 或 setAdapter(),无论哪个适用。

标签: android kotlin


【解决方案1】:

Kotlin 中的属性只不过是值的 getter 和 setter。如果您不想提供 getter,则必须使用 fun setData(data: List)

否则也可以使用该属性处理所有事情

var data = listOf()
        set(data: List) {
            field = data
            notifydatasetChanged()
        }

但最终使用DiffUtil 的实现会更好。

【讨论】:

  • 这只是为了澄清,所以当我们使用 DiffUtil 时,我们应该使用属性或其他方式。
  • @Anil 你应该使用你认为最适合它的任何东西。 DiffUtil 只是在某种程度上替换了 notifydatasetChanged()。但是您应该在后台进行主要计算。而且您无需在适配器内调用notifydatasetChanged()
猜你喜欢
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
相关资源
最近更新 更多