Intereting Posts
Android Kotlin добавляет элементы в ListView из Spinner Преобразует ли файл Kotlin в java, добавив к нему java-код и вернувшись обратно в Kotlin так же, как добавление кода непосредственно в файл Kotlin? Должен ли возврат DAO от Kotlin Необязательный или нулевой? Когда экземпляр Kotlin (объявленный с помощью модификатора объекта) создается? Почему var с частным сеттером является инвариантной позицией? Изменение цвета кнопок и цветов progressbar с помощью Anko Грейд занимает время спереди, казалось бы, ничего не делает Можно ли ограничить тип списка реализацией интерфейса в Котлин? Как открыть ссылки, не связанные с URL веб-браузера в браузере из приложения Почему можно опустить значения по умолчанию в переопределенных функциях-членах подтипов? varargs, чтобы карта в Котлин checkParameterIsNotNull ошибка в примере входа в систему Только готовые коллекции Джексона Функция последовательности Котлина неразрешенная ссылка ExpandableListView не отображается в моей деятельности

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