Я создал метод расширения:
@Suppress("UNCHECKED_CAST")
operator fun <T : View> View.get(@IdRes id:Int): T =
this.findViewById(id) as T
Основное использование этого метода:
class A {
lateinit var text: TextView
fun init(view:View) {
text = view[R.id.text]
}
}
Это работает отлично, но когда я пытаюсь использовать его без переменной:
fun test() {
view[R.id.text].visibility = View.GONE // error
}
Ошибка:
Type inference failed: Not enough information to infer parameter T in
operator fun <T : View> View.get(id: Int): T
Please specify it explicitly.
Если я пишу аналогичный код на java, то методы класса View доступны без прямого указания типа View.
Возможно ли это в котлине? Может быть, как-то изменить сигнатуру универсального типа?
T
, если она действительна, а Kotlin - нет. - person Jorn Vernee   schedule 04.08.2017findViewById
: kotlinlang.org/docs/tutorials/android- плагин.html - person Miha_x64   schedule 05.08.2017