我正在尝试继承 MutableList,并向其中添加我自己的函数。例如:

class CompositeJob : MutableList<Job> {
    fun cancelAllJobs() {
        for (job in this) {
            job.cancel()
        }
    }
}

但我收到以下错误:



我如何继承 MutableList,以便我可以使用它的原始方法,如 add() 和 isEmpty(),并添加我自己的方法?

谢谢。

最佳答案

MutableList 是一个接口(interface)——它不实现它的任何方法,只是声明它们。如果你想从头开始实现 MutableList,你必须实现它的所有 20 个方法加上 size 属性,正如你的错误已经告诉你的那样。

但是,您可以子类化此接口(interface)的实际实现,例如 ArrayList LinkedList :

class CompositeJob : ArrayList<Job>() {
    fun cancelAllJobs() {
        for (job in this) {
            job.cancel()
        }
    }
}

编辑:如果您只是想对协程 Job 实例进行分组,此时您应该使用父 Job SupervisorJob CoroutineScope ,而不是手动收集这样的作业。

关于kotlin - 如何在 Kotlin 中继承 MutableList?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51203426/

10-10 19:44