繁体   English   中英

如何存储Kotlin的KFunction1列表?

[英]How to store a list of KFunction1 for kotlin?

基本上我想创建一个可以通过以下方式使用的路由器

router.register(someInstance::getData)
router.register(someInstance::submitData)

其中getData和SubmitData都是的实例

getParam : KFunction1<GetParam, GetResponse> 
submitData : KFunction1<SubmitParam, SubmitResponse>

其中,GetParam,GetResponse,SubmitParam,SubmitResponse是实现相应接口(IParam,IResponse)的类

在寄存器内看起来像

val routeMap = mutableMapOf<String, KFunction1<IParam, IResponse>
fun register<P : IParam, R : IResponse>(func : KFunction1<P, R>) {
    routeMap["abc"] = func
}

现在唯一的问题是,我似乎无法直接访问KFunction1(因此无法存储它们)

这个想法基本上是创建某种可以注册并稍后再调用已注册功能的路由器。 如果有人对如何实施此方法有任何其他想法,请随时提出建议

如果只想注册并调用它们,请使用常规函数类型: (P) -> R ,而不是KFunction1<P, R>

但是真正的问题是(P) -> R不是(IParam) -> IResponse的子类型(并且不能因为它的invoke方法不接受任何IParam ),因此不能存储在routeMap

如何解决此问题取决于类型不匹配时要发生的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM