Я не уверен, возможно ли установить расширение kotlin как объект Java.
В моей программе у меня есть класс java с именем Submission
, и я хотел создать расширение kotlin для него с именем categories
— ArrayList — поэтому я сделал это так.
var Submission.categories: ArrayList<String>
get() {
return this.categories
}
set(categories){
this.categories = categories
}
Однако всякий раз, когда я пытаюсь установить категорию, программа просто вылетает с ошибкой stackOverflowError следующим образом:
ERR: stack=java.lang.StackOverflowError: stack size 8MB
at com.....setCategories(Extensions.kt:0)
at com.....setCategories(Extensions.kt:19)
at com.....setCategories(Extensions.kt:19)
at com.....setCategories(Extensions.kt:19)
at com.....setCategories(Extensions.kt:19)
at com.....setCategories(Extensions.kt:19)
Похоже, это правильный синтаксис для объявления расширений kotlin. Поэтому я действительно не уверен, в каком направлении мне следует идти, чтобы исправить это. Возможно, мне действительно следует просто использовать простое старое наследование?
Спасибо.
this.categories = categories
вызовет методset()
, что приведет к бесконечному циклу. - person Egor   schedule 19.12.2016