问题
say, i have one Kotlin class with annotations:
@Entity @Table(name="user") data class User (val id:Long, val name:String)
How can i get the value of name attribute from @Table annotation?
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:
You can simply:
val table = c.annotations.find { it is Table } as? Table
println(table?.name)
Note, I used the is
operator since the annotation has RUNTIME
retention and therefore it is an actual instance of the Table
annotation within the collection. But the following works for any annotation:
val table = c.annotations.find { it.annotationClass == Table::class } as? Table
来源:https://stackoverflow.com/questions/39806025/kotlin-how-to-get-annotation-attribute-value