下面是示例代码:
class PurchaseHistory: MutableList<PurchaseInfo> by mutableListOf() {
override fun add(element: PurchaseInfo): Boolean {
// ... some code
return super.add(element)
}
}
但是,我得到了abstract member cannot be accessed directly
。当我在类外使用原始方法时,我不会遇到任何问题,但为什么我不能在类内做同样的事情呢?
2条答案
按热度按时间rta7y2nd1#
你得到这个错误是因为你试图调用的
add
方法并不真正在PurchaseHistory
的超类中(因为它没有超类),因此这个错误告诉你你不能仅仅使用super
调用接口(抽象)方法。要执行您想要的操作,您可以保留一个指定对象的句柄。例如,您可以将其存储为属性:
另一种选择是直接扩展
MutableList
的实现(例如ArrayList
),而不是通过委托实现,但这可能不是您的选择。okxuctiv2#
您正在尝试从未定义的接口MutableList调用方法。
只要把你的类做成ArrayList supper,你应该会有很好的结果: