Intereting Posts
@ Предоставляет методы в SubComponent с AndoridInjector и Kotlin Обработчик исключений не работает с `spring-boot-starter-data-rest` Как запустить класс Kotlin из командной строки? Как управлять потоком без .flatMap, который разбивает реактивный поток, предотвращающий работу операторов, таких как distinctUntilChanged, от работы со всем потоком Как идиоматически проверить непустые, непустые строки в Котлин? Как отправить уведомление от IntentService на Android с помощью Kotlin Eclipse Aether не разрешает `LATEST` правильно Kotlin – Список сортировки с использованием форматированной строки даты (функциональной) Как установить прокси для Spring AsyncRestTemplate с помощью Netty4ClientHttpRequestFactory? Можем ли мы достичь безопасности типа компиляции для объединения типов, которые мы не можем контролировать? почему String, разделенная с регулярной строкой в ​​Kotlin, не совпадает с Java? Kotlin и Dagger: могу ли я использовать объект @Inject для объекта, который все еще делает его нулевым / необязательным? Работа для администратора устройства api не имеет собственного профиля Kotlin – Значение преобразования при инициализации Класс Mock Kotlin в модульном тестировании Java

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? } 

Solutions Collecting From Web of "Kotlin – как получить значение атрибута аннотации"

Вы можете просто:

 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