Kotlin - как получить значение атрибута аннотации

скажем, у меня есть один класс Котлин с комментариями:

@Entity @Table(name="user") data class User (val id:Long, val name:String)

Как я могу получить значение атрибута name из аннотации @Table?

fun <T> tableName(c: KClass<T>):String {
    // i can get the @Table annotation like this:
    val t = c.annotations.find { it.annotationClass == Table::class }
    // but how can i get the value of "name" attribute from t?
}

1 ответов


можно просто:

val table = c.annotations.find { it is Table } as? Table
println(table?.name)

Примечание, я использовал is оператор с аннотации RUNTIME сохранение и, следовательно, это фактический экземпляр Table Аннотация В коллекции. Но для любой аннотации работает следующее:

val table = c.annotations.find { it.annotationClass == Table::class } as? Table