簡體   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