我不确定是否可以将kotlin扩展设置为java对象。设置kotlin扩展
在我的程序中,我有一个叫做Submission
的java类,我想创建一个名为categories
的kotlin扩展 - 一个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)
这似乎是宣告科特林扩展正确的语法。所以我真的不确定我应该怎样去解决这个问题。也许我应该只是使用普通的旧继承?
谢谢。
你没有在setters中的getter中定义任何自定义逻辑,那么为什么你需要它们?这个问题是由不正确的setter声明造成的,'this.categories = categories'将调用'set()'方法,这将导致无限循环。 – Egor
@Egor啊,这很有道理。我定义get和set方法的原因是因为它拒绝在没有get方法和return语句的情况下进行编译。我认为它也是一样的,也是这样做的。我将尝试删除设置的逻辑,看看会发生什么。 – nmu