如何在 Kotlin 中读取 sealed class subclass?

How to read sealed class subclass in Kotlin?

在我的 Android 工作室项目中,我有如下结构:

@Stable
interface Levels {

    @Immutable
    sealed class LevelData {

        object Empty : LevelData()

        @Immutable
        data class L1(
            val locationData: Locations.LocationData.StageL1
        ) : LevelData()
    }
}

在另一个 class 中,我有 val levelData = mutableStateOf<Levels.LevelData>(Levels.LevelData.Empty) 变量,默认为 Empty。然后状态发生变化,我想像 levelData.value.locationData?

一样访问 levelData 中的 locationData

AndroidStudio 中的自动完成在下拉列表中没有显示任何locationData成员访问权限?!?

您的 levelData 变量保存超类型 Levels.LevelData 的可变状态。您需要将对象转换为 L1 才能访问 locationData

val value = levelData.value
if(value is Levels.LevelData.L1){
    val locationData = value.locationData
    //perform action on locationData
}