Intereting Posts
как реализовать ограниченный вызов с клиентом блокировки доработки и сопрограммами Дооснащение 2 Длина содержимого RequestBody больше, чем размер файла Котлин показал несоответствие типов в фрагменте Можно ли избежать повторения кода, когда объект должен вернуть измененную копию самого себя? Общая функция в интерфейсе для возврата конкретной реализации Аннотации Android с Kotlin Вызов суперкласс класса в Котлин, Супер не является выражением Kotlin – абстрактная функция с общим типом возврата Почему var i начинается с 0 в Котлине? Есть ли способ ссылаться на класс Java для функции верхнего уровня Kotlin? Метод подстановки Котлина Ошибка базы данных комнаты с классом данных Kotlin «Недопустимое имя поля BSON» во время upsert Получение ошибки, связанной с сертификатом, при загрузке Kotlin в Android Studio Замена SAM-конструктора на лямбда ковариантным типом

Функции расширения для аннотированных типов

Можно ли определить функцию расширения Котлина на таком аннотированном типе?

@ColorInt fun @ColorInt Int.darken(): Int { return ColorUtils.blendARGB(this, Color.BLACK, 0.2f) } 

Альтернативная форма:

 @ColorInt fun (@ColorInt Int).darken(): Int { return ColorUtils.blendARGB(this, Color.BLACK, 0.2f) } 

Это соответствовало бы следующим статическим функциям:

 @ColorInt fun darken(@ColorInt color: Int): Int { return ColorUtils.blendARGB(color, Color.BLACK, 0.2f) } 

Я не думаю, что это возможно с использованием Kotlin, но можно ли добавить эту функцию в более поздние версии Kotlin?

На стороне примечания: тот же вопрос относится к @IntDef , @StringDef , @[resource type]Res также.

Да, ты можешь. Используйте следующий синтаксис:

 @ColorInt fun @receiver:ColorInt Int.darken(): Int { return ColorUtils.blendARGB(this, Color.BLACK, 0.2f) } 

Подробнее о целях использования целевых объектов аннотации: http://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets