我不確定是否可以將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