kotlin密封类的使用
首先看一个例子
interface Result
class Success(val msg:String):Result
class Failure(val error:String):Result
定义俩个类来实现Result接口
fun getResultMsg(result:Result)=when(result){
is Success->result.msg
is Failure->result.error.message
else -> throw IllegalArgumentException()}
运行结果只可能是Success和failure 但是如果没有else就无法运行通过,因为kotlin的语法检查功能
如果使用密封类,就可以解决这个问题
sealed class Result
class Success(val msg:String):Result()
class Failure(val error:String):Result()
fun getResultMsg(result:Result)=when(result){
is Success->result.msg
is Failure->result.error.message}
编译器会检查有哪些子类,同时会强制性对每一个子类所对应的条件进行处理,意思是要对每一个子类进行处理,如果忘记处理会报错