我有一个具有多个字段的静态编程语言枚举。其中一个字段(entableBoard
)是另一个枚举的值。在运行时,尽管已设置,但此val为空。
我以前从未见过这样的情况,其他字段工作正常,即使是引用当前项目的字段!我已经包含了完整的枚举定义,因为我不确定什么是相关的。
Item
枚举和一个值,其中entableBoard
意外为空,而不是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)
}
电路板枚举和相关值:
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))
}
这是entableBoard
意外为空的截图:
附加说明:
我很确定这是因为你有一个相互的参考。董事会在其构造函数中引用项目,反之亦然。两个枚举类的成员中的一个在另一个之前实例化,因此在引用其他值时,对其他值的引用仍然为null。这是通过做一些不应该做的事情,比如从构造函数调用一个open函数,来获得对Kotlin中null的不可为null的引用(如果你的板参数不可为null,这种情况仍然会发生)。
基本上,枚举不能安全地相互引用,因为它们在实例化时是如何编译和行为的。编译器是否应该针对这种情况显示警告或错误?可能吧,但显然不是。
这里有一个问题的最小可复制示例:
enum class Item (val board: Board) {
X(Board.Y)
}
enum class Board(val item: Item) {
Y(Item.X)
}
fun main() {
Item.X
println(Board.Y.item)
}
打印null,因为引用了
项。X导致首先尝试实例化项的成员,但由于其构造函数引用了Board,因此Board实际上首先实例化,并使用仍然为null的项。X参考。
我在我的一个项目中使用RxJava,我使用Android Studio插件将我的一个类转换为静态编程语言,并在maplambda(java中的Func1)之一中,中间体返回如下所示。 我不知道这意味着什么。
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
我有一个注释要求是编译时常量。我从下面的中获取: 我的s如下: 当我使用注解Kotlin需要是编译时常量。 注释实现本身: 我仔细研究了类似的问题,但没有找到解决方法。我还找到了一篇与这个主题相关的文章,但到目前为止没有任何效果。 附带说明:我不能更改注释,因为它来自库,我也不能更改库。 总而言之,有没有办法从静态编程语言中的编译时常量到注释中使用?
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我
我的项目中有这个错误。但是,找不到任何地方如何解决它。有人有这个问题吗? 它会导致每次都重新运行构建。 使用静态编程语言编译守护程序不成功 无法连接到kotlin守护程序。使用回退策略。