为什么我得到的信息是Enum参数在Java中可以为null,但在Kotlin中不包含null分支时却可以是详尽的?

为什么我得到的信息是Enum参数在Java中可以为null,但在Kotlin中不包含null分支时却可以是详尽的?,kotlin,android-livedata,Kotlin,Android Livedata,代码B工作得很好,但是代码A会得到以下警告提示(它可以运行),为什么 枚举参数在Java中可以为null,但在不包含null分支时可以是穷举的 我认为\u playState.value在代码B中也可以为null,当我在代码B中使用时是否应该添加null分支 代码A private val _selectAction = MutableLiveData<ESelect>() val selectAction: LiveData<ESelect> = _selectActi

代码B工作得很好,但是代码A会得到以下警告提示(它可以运行),为什么

枚举参数在Java中可以为null,但在不包含null分支时可以是穷举的

我认为
\u playState.value
在代码B中也可以为null,当我在代码B中使用
时是否应该添加null分支

代码A

private val _selectAction = MutableLiveData<ESelect>()
val selectAction: LiveData<ESelect> = _selectAction

selectAction.observe(mLifecycleOwner) {
   when(it) {               //Enum argument can be null in Java, but exhaustive when contains no null branch                                   
         ESelect.SelectAll    -> binding.chSelect.isChecked = true
         ESelect.UnselectAll  -> binding.chSelect.isChecked = false
         ESelect.NoAction     -> Unit
   }
}



enum class ESelect{
    SelectAll,
    UnselectAll,
    NoAction  
}
private val\u selectAction=MutableLiveData()
val selectAction:LiveData=\u selectAction
选择Action.observe(mLifecycleOwner){
when(it){//Enum参数在Java中可以为null,但在不包含null分支时可以是穷举的
ESelect.SelectAll->binding.chSelect.isChecked=true
ESelect.UnselectAll->binding.chSelect.isChecked=false
ESelect.NoAction->Unit
}
}
枚举类重新选择{
选择全部,
取消选择,
无作用
}
代码B

private val _playState=MutableLiveData<EPlayState>()

 override fun playOrPause(filename: String) {
        when (_playState.value) {
           EPlayState.STOPPED -> play(filename)
           EPlayState.PLAYING -> pause()
           EPlayState.PAUSED  -> resume()
        }
    }


enum class EPlayState {
    STOPPED,
    PLAYING,
    PAUSED
}
private val\u playState=MutableLiveData()
覆盖趣味playOrPause(文件名:String){
当(_playState.value){
EPlayState.STOPPED->play(文件名)
EPlayState.PLAYING->pause()
EPlayState.PAUSED->resume()
}
}
枚举类EPlayState{
停止,
玩,
停顿
}

LiveData
是用
Java
编写的。传递给
Observer()
函数的第二个参数是Java接口
Observer
的匿名实现。由于Java对Kotlin中的可空性一无所知,因此参数
it
假定为可空。

代码A中的
it
类型是什么?请参阅,谢谢!你是说
selectAction.observe
是Java接口的匿名实现吗?所以系统会给出警告提示,
当(_playState.value){}
是Kotlin实现时,没有警告提示是完美的,对吗?