【发布时间】:2021-10-22 06:15:18
【问题描述】:
我有一个包含多个字段的 Kotlin 枚举。其中一个字段 (enterableBoard) 是另一个枚举的值。在运行时,尽管已设置此 val 为 null。
我以前从未见过这样的事情,并且其他领域工作正常,即使是引用当前Item 的领域!我已经包含了完整的枚举定义,因为我不确定什么是相关的。
Item 枚举和一个值,其中 enterableBoard 意外地为 null 而不是 Board.SPACEX_EARLY_TREES。
enum class Item(
val chain: ItemChain,
val tier: Int,
@StringRes val title: Int,
@DrawableRes val image: Int,
val generatorMaxEnergy: Int = 0,
val enterableBoard: Board? = null,
val mergeBonus: Pair<Item, Int>? = null,
val redeemable: Pair<InfoLong, Int>? = null
) {
TREE_9(ItemChain.TREE, 9, R.string.item_tree9, R.drawable.item_tree9,
generatorMaxEnergy = 50, enterableBoard = Board.SPACEX_EARLY_TREES)
}
Board枚举和相关值:
enum class Board(
val campaign: Campaign,
@StringRes val title: Int,
@StringRes val description: Int,
@DrawableRes val background: Int,
@DrawableRes val image: Int,
val unlockCost: Int,
val template: List<Item>
) {
SPACEX_EARLY_TREES(Campaign.SPACEX_EARLY, R.string.board_spacex_early_tree_title, R.string.board_spacex_early_tree_description,
R.drawable.background5, R.drawable.background5, 0,
listOf(Item.FRUITVEG_1, Item.FRUITVEG_2, Item.FRUITVEG_1))
}
这是enterableBoard 意外为空的屏幕截图:
补充说明:
- 我尝试更改
TREE_9中的其他值,并且它们都更新了,因此包含的定义肯定是正在使用的定义。 - 尝试在代码中访问该字段时,该字段也为空。
- Kotlin 版本 1.5.20。
- Android Studio 2020.3.1 补丁 1。
【问题讨论】: