Igo*_*kin 2 enums annotations kotlin
我知道如何在 Java 中获取枚举值的注释。然而 Kotlin 有自己的反射库,我觉得应该有更好的方法来完成这项工作。请任何人发布一个例子。
具体来说,让我们定义一个枚举类
enum class Enum {
@SerialName("constant")
Constant
}
Run Code Online (Sandbox Code Playgroud)
我需要一个函数,f(e: Enum): String以便f(Enum.Constant) == "constant".
Ali*_*ler 10
您可以对 java 使用类似的方法,通过名称获取字段,然后使用注释类访问注释。
因此,如果您有以下枚举和注释类定义;
enum class Enum {
@SerialName("constant")
Constant
}
annotation class SerialName(val value: String)
Run Code Online (Sandbox Code Playgroud)
然后您可以定义以下函数并调用它,如下所示;
fun getAnnotationValue(enum:Enum):String = enum.declaringClass.getField(enum.name).getAnnotation(SerialName::class.java).value
fun main(args: Array<String>) {
println(getAnnotationValue(Enum.Constant))
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。