Kotlin аннотирует приемник функции расширения - PullRequest
0 голосов
/ 03 июля 2018

Я хотел бы ограничить, на какую функцию расширения постоянного значения можно вызывать. Например, функция как:

@IdRes
fun <T : View> Int.find() = findViewById<T>(this)

Если это было вызвано для реального идентификатора, все в порядке:

R.id.someView.find<TextView>() // ok

Но это должно привести к ошибке компиляции:

42.find<TextView>() // should be compile error

Поддерживается ли приемник аннотирования расширений в Kotlin?

1 Ответ

0 голосов
/ 03 июля 2018

Как описано в документации , вы можете использовать следующий синтаксис:

fun @receiver:IdRes <T : View> Int.find() = ...

Однако обратите внимание, что компилятор Kotlin не знает о семантике аннотаций Android, поэтому их неправильное использование никогда не является ошибкой компиляции; в лучшем случае это провальная проверка.

...