我有一个类似下面的类。在第7行,我想直接调用init
块,但是如果不使用反射,这似乎不可能。如何显式调用对象的init块?
object MyClass {
var editor: Editor = getDefaultEditor()
set(value) {
field = value
//Todo: figure out how to avoid duplicating init block
project = editor.project!!
document = editor.document.charsSequence.toString().toLowerCase()
findModel = FindManager.getInstance(project).findInFileModel.clone()
findManager = FindManager.getInstance(project)
}
var project: Project
var document: String
var findModel: FindModel
var findManager: FindManager
init {
project = editor.project!!
document = editor.document.charsSequence.toString().toLowerCase()
findModel = FindManager.getInstance(project).findInFileModel.clone()
findManager = FindManager.getInstance(project)
}
}
但我需要有init
块,以便没有实例初始化属性,所以如果我更换init
块与setEditor(getDefaultEditor())
中的代码,那么编译器会抱怨说,“属性必须被初始化或抽象“。我如何避免重复init
中的所有内容?
嘿。接受一些答案,使这个社区更好:) – mklimek