Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 参数的Kotlin中的通用通配符_Android_Kotlin - Fatal编程技术网

Android 参数的Kotlin中的通用通配符

Android 参数的Kotlin中的通用通配符,android,kotlin,Android,Kotlin,我有一个用于监听api回调的抽象类,如下所示。ApiRs是每个API响应对象从中继承的父对象 abstract class ApiCallback<in T : ApiRs> { open fun onSucceed(apiRsModel: T) {} open fun onFailed(code: Int, message: String) { } } 参数类型ApiCallback?实际上我想像ApiCal

我有一个用于监听api回调的抽象类,如下所示。ApiRs是每个API响应对象从中继承的父对象

abstract class ApiCallback<in T : ApiRs> {

    open fun onSucceed(apiRsModel: T) {}

    open fun onFailed(code: Int,
                      message: String) {
    }
}

参数类型
ApiCallback?
实际上我想像
ApiCallback那样编写它,我知道您想要接受
ApiCallback:ApiCallback。您可以这样声明函数:

fun <T: ApiRs> isNetworkAvailable(apiCallback: ApiCallback<T>?,
                       context: Context)
fun isNetworkAvailable(apiCallback:apiCallback?,
上下文:上下文)

ApiCallback
这将采用任何类型的
apir
。当我使用
ApiCallback
时,请参见星体投影不起作用,上面的警告将不会起作用show@NikolaDespotoski这是对的。每一个API扩展ApiRs都会被接受,但如果没有另一个强制转换,将只具有ApiRs类提供的功能。好的,我知道你们的意思,将
ApiCallback?
更改为
ApiCallback?
右侧?否。
ApiCallback
ApiCallback
相同,您需要设置类型的上限
ApiCallback
谢谢!你的解决方案很有道理!
fun <T : ApiRs> isNetworkAvailable(apiCallback: ApiCallback<T>?,
                                       context: Context): Boolean {
        val connectivityManager = context
                .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connectivityManager.activeNetworkInfo

        // device network unreachable
        if (networkInfo == null
                || !networkInfo.isConnected) {
            // callback with network error
            callbackWithFailed(
                    apiCallback,
                    ApiError.API_ERROR_CODE_0,
                    context.getString(R.string.api_error_code_0))
            return false
        }

        return true
    }
fun <T: ApiRs> isNetworkAvailable(apiCallback: ApiCallback<T>?,
                       context: Context)