Как принудительно создать экземпляры значений перечисления?
По умолчанию в Kotlin перечисления создаются при первом доступе (например, object
s / singleletons), то есть в следующем минимальном примере
class Foo
fun create(msg: String) = Foo().also { println("$msg") }
enum class A(val foo: Foo) {
ONE(create("1")),
TWO(create("2"))
}
enum class B(val foo: Foo) {
THREE(create("3")),
FOUR(create("4"))
}
fun main() {
println("main")
println(A.ONE)
}
выходы:
main
1
2
ONE
Можно ли принудительно / статически создавать экземпляры перечислений перед main
, чтобы результат был следующим?
1
2
3
4
main
ONE
Конечно, я мог бы просто поместить где-нибудь что-то вроде val ignore = listOf(A.ONE, B.THREE)
, но я бы хотел избежать повторения вручную.
Может быть, есть способ использовать существующую аннотацию или создать новую, или что-то еще ? :)