获取枚举值的注释

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)

希望这可以帮助。