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