我是Kotlin的新手,我有一个包含许多值的枚举,这些值引用了我的应用程序所具有的不同状态。
现在,无论何时应用进入状态,我都需要记录一些东西,但是枚举中的某些状态可以记录不止一件事(基于来自应用外部的其他参数),而某些状态则不需要记录任何东西。
这是我的枚举:
enum class StateName(vararg log: String) {
FIRST_CONNECTION(), // no parameter here
AUTHORIZATION_CHECK("message 1", "message 2"),
HANDSHAKE_SUCCESS("message")
//...
}
如果使用单个强制性参数StateName(var log: String)
声明了枚举,我本可以使用HANDSHAKE_SUCCESS.log
来检索其值,但是使用vararg
时,IDE(Android Studio)找不到{{1 }}。
那我该如何使用类似log
的字符串来检索我的字符串?
注意:
答案 0 :(得分:3)
您需要将其更改为:
enum class StateName(vararg val log: String)
通过这种方式您可以访问日志
答案 1 :(得分:0)
您需要在枚举内部创建一个变量,该变量将保存所有如下所示的参数:
enum class StateName( vararg log: String) {
FIRST_CONNECTION(), // no parameter here
AUTHORIZATION_CHECK("message 1", "message 2"),
HANDSHAKE_SUCCESS("message");
public var logParams:Array<out String>
init{
logParams=log
}
}
要打印与特定枚举相对应的参数,可以如下进行迭代:
for (item in StateName.AUTHORIZATION_CHECK.logParams) {
println("item = "+item)
}