Kotlin:带有泛型的内联函数的参数在运行时找不到

时间:2019-06-28 16:39:00

标签: android kotlin inline kotlin-reified-type-parameters

首先,我是Kotlin编程语言的新手。因此,诸如此类的关键字和概念inlinereifiedcrossinline在我脑海中还不够清晰。在下面的示例代码中,我使用了这些关键字,因为我需要在运行时知道T的类型,以便在发出Web请求之前和之后对其进行序列化和反序列化。

这是post类的ApiClient函数:

inline fun <reified T> post(entity: T, crossinline completion : (entity : T?, errorStatusCode: Int?) -> Unit) {
    performRequest(
        httpMethod = Request.Method.POST,
        entity =  entity,
        completion =  completion)
}

然后,我从PassengerRepositoryImpl调用此函数:

override fun register(passenger: Passenger, completion: (passenger: Passenger?, errorStatusCode: Int?) -> Unit) {

    apiClient.post(passenger, completion)
}

我的问题是,我的entitycompletion参数总是在post函数内部“找不到”,如下面的图像所示:

passenger已正确传递给post函数:

<code>passenger</code> is correctly passed to <code>post</code> function

但是在entity正文中找不到post参数。

Cannot find find local variable <code>entity</code>

我的问题是:如何解决这个问题?我有什么困惑吗?

感谢您的帮助。

0 个答案:

没有答案