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
Generics Kotlin中“无”与“任何”的区别是什么_Generics_Kotlin - Fatal编程技术网

Generics Kotlin中“无”与“任何”的区别是什么

Generics Kotlin中“无”与“任何”的区别是什么,generics,kotlin,Generics,Kotlin,我想知道什么都没有和什么都没有的区别 我已经封了班 sealed class Result<out R>() { data class Success<out T>(val data: T) : Result<T>() data class Error(val errorMsg: String) : Result<Nothing>() } 密封类结果(){ 数据类成功(val数据:T):结果() 数据类错误(val errorMs

我想知道什么都没有和什么都没有的区别

我已经封了班

sealed class Result<out R>() {
    data class Success<out T>(val data: T) : Result<T>()
    data class Error(val errorMsg: String) : Result<Nothing>()
}
密封类结果(){
数据类成功(val数据:T):结果()
数据类错误(val errorMsg:String):结果()
}
这就是结果类的用法

fun <T>test(data: T) : Result2<T> {
    return Result2.Error("error")
}
fun测试(数据:T):结果2{
返回结果2.Error(“Error”)
}
如果我改变这个

data class Error(val errorMsg: String) : Result<Nothing>()
数据类错误(val errorMsg:String):结果()
对此

data class Error(val errorMsg: String) : Result<Any>()
数据类错误(val errorMsg:String):结果()
测试功能中出现错误(下面的错误消息)

类型不匹配。
要求:结果
找到:结果。错误

键入Nothing可以代替泛型T吗?

Nothing
是一个没有实例的类。 在kotlin类型系统中,
没有任何内容被视为所有其他类的子类。
任何
都是完全相反的。被视为
Any
子类的每一个其他类

在函数
test
中,您声明
T
为下限。但是
Any
不能匹配,因为它比任何其他
t
都低。记住:
Any
是任何其他类的父类

在关于kotlin类型系统的博文中也可以看到一些好处:

Type mismatch.
Required: Result<T>
Found: Result.Error