#annotations #kotlin
#аннотации #kotlin
Вопрос:
скажем, у меня есть один класс 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
Комментарии:
1.
find
эквивалентноfirstOrNull
, неfirst
2. да, на мой взгляд, это было временно назад, просто упростил ответ, не беспокоясь об этом.