gpt4 book ai didi

android - Kotlin - 接口(interface)中的只读属性

转载 作者:太空狗 更新时间:2023-10-29 16:10:43 26 4
gpt4 key购买 nike

我有这个实用程序接口(interface)要由 RecyclerView 的 ViewHolder 实现,它会触发 UI 事件。

interface ObservableMvpViewHolder<V> {
val listeners: List<V>

fun registerListener(listener:V)
fun unregisterListener (listener: V)

}

listeners 属性就像一个契约(Contract),所以我想强制客户声明它以存储观察者。

但是当我实现这个接口(interface)时,我必须为这个属性声明一个 getter:

class AddItemViewHolderHolder(override val containerView: View) : ViewHolder(containerView), LayoutContainer, ObservableMvpViewHolder<AddItemViewHolderHolder.Listener> {
override val listeners: List<Listener>
get() = listeners

我不想这样做以避免将此属性暴露给外部。

我是 Kotlin 的新手,有没有办法不用声明抽象类就可以做到这一点?

最佳答案

您所说的接口(interface)是您让每个人都阅读的契约(Contract),因此,隐藏属于该契约(Contract)一部分的属性没有意义。

They (The Interfaces)can have properties but these need to be abstract or to provide accessor implementations.

Interface Documentation

正如您所说,您可以使用抽象类实现此行为:

abstract class ObservableMvpViewHolder<V> {
private val listeners : List<V> = emptyList()

abstract fun registerListener(listener:V)
abstract fun unregisterListener (listener: V)

}

关于android - Kotlin - 接口(interface)中的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com