kotlin中的属性可以在init块中初始化:
val a: String
init {
a = "aaa"
}
我可以在init块中通过委托初始化属性吗?
答案 0 :(得分:2)
属性委派只能在声明属性(或局部变量,因为1.1)的情况下完成,以后不能在init
块中执行。您可以在Kotlin语法here中看到这个定义:
property
: modifiers ("val" | "var")
typeParameters?
(type ".")?
(multipleVariableDeclarations | variableDeclarationEntry)
typeConstraints
("by" | "=" expression SEMI?)?
(getter? setter? | setter? getter?) SEMI?
;
解释语法的这一部分是没有用的,但你可以很快看到它描述了属性声明,它在开头总是包含val
或val
,然后就是后来某个地方的by
代表团,然后是expression
描述代表。
语法中只有by
关键字的另一个外观,当然它是用于类授权的时候。
答案 1 :(得分:1)
您可以委托给另一家酒店。
class Foo {
private val del: ReadWriteProperty<Foo, String>
init { del = Delegates.notNull() }
val bar by del
}