Kotlin:通过Class <t>进行带when-check的转换,但显示“类型不匹配”。

时间:2019-04-22 19:31:03

标签: generics kotlin

我的意图是将此类用于不同的动作。 例如:HeadHelper<ActionOnlineStatus>(ActionOnlineStatus::class.java) 为了只有一个功能。但是现在出现了类型不匹配错误,我很好奇如何解决它,因为一切对我来说都很好。

Type mismatch.
Required: T
Found: ActionOnlineStatus!

我已经尝试过ActionOnlineStatus(connection.responseCode == HttpURLConnection.HTTP_OK) as T,但是它是Unchecked cast: ActionOnlineStatus! to T,我不想使用抑制注释。

我的代码:

class HeadHelper<T : Action>(_action: Class<T>) : AsyncTask<Consumer<T>, Unit, Unit>() {

    private val action = _action

    override fun doInBackground(vararg params: Consumer<T>) {
        when (action) {
            ActionOnlineStatus::class.java -> {
                params[0].accept(action.cast(ActionOnlineStatus(true)))
                //Type mismatch.
                //Required: T
                //Found: ActionOnlineStatus!
            }
        }
    }

}

interface Action

class ActionOnlineStatus(_online: Boolean) : Action {
    val online = _online
}

0 个答案:

没有答案