Kotlin中的嵌套接口替代方法
好吧,我有一个接口,其中有很少的接口,在Kotlin代码看起来像这样
interface IStreamRepository : IBaseRepository { interface OnAddStreamCallback { fun onSuccess() fun onError(message: String) } interface OnGetAllStreamsCallback { fun onSuccess(streams: ArrayList) fun onError(message: String) } interface OnGetStreamByNameCallback { fun onSuccess(stream: Stream) fun onError(message: String) } interface OnDeleteStreamCallback { fun onSuccess() fun onError(message: String) } }
当我尝试做
getAllStreamsCallBack = IStreamRepository.OnGetAllStreamsCallback() { //and override methods in OnGetAllStreamsCallback interface }
编译器抛出如下错误OnGetAllStreamsCallback does not have constructors
,我该如何解决这个问题?
当我尝试做getAllStreamsCallBack = IStreamRepository.OnGetAllStreamsCallback(){和重写OnGetAllStreamsCallback接口中的方法}编译器会抛出以下错误OnGetAllStreamsCallback剂量没有构造函数
你会得到与非嵌套接口相同的错误。 语法是getAllStreamsCallBack = object : IStreamRepository.OnGetAllStreamsCallback { ... }
。 如果它是一个类,你需要()
在名字后面,对于一个你不需要的接口。
链接的问题与嵌套的注记类有关。 你可以嵌套接口没有问题:
interface Outer { interface Inner } fun main(args: Array) { val o = object : Outer {} val i = object : Outer.Inner {} }