Kotlin中二级构造函数的语法
我有这个代码片段。应说明施工人员的施工顺序:Kotlin中二级构造函数的语法,kotlin,Kotlin,我有这个代码片段。应说明施工人员的施工顺序: fun main(args: Array<String>) { Sample("T","U") } class Sample(private var s : String) { constructor(t: String, u: String) : this(t) { // I don't get what "this(t)" is! this.s += u } init {
fun main(args: Array<String>) {
Sample("T","U")
}
class Sample(private var s : String) {
constructor(t: String, u: String) : this(t) { // I don't get what "this(t)" is!
this.s += u
}
init {
s += "B"
}
}
fun main(args:Array){
样本(“T”、“U”)
}
类示例(私有变量s:String){
构造函数(t:String,u:String):这个(t){//我不明白“这个(t)”是什么!
这个.s+=u
}
初始化{
s+=“B”
}
}
二级构造函数声明中的“:this(t)”是什么?
这不是返回类型吗?不是吗?
this(t)
调用主构造函数并将t作为s的参数传递。
你甚至可以这样写:
this(s = "a")
class Sample {
private var s = ""
constructor(t: String) {
s = ...
}
constructor(t: String, u: String) {
s = ...
}
}
然后将s设置为“a”。
所以顺序是:主构造函数,init,次构造函数。有关更多详细信息:在本例中,
此
是委托给主构造函数的关键字。在Kotlin中,当您的类有多个时,它是必需的。
Java的等价物是:
class Simple {
private String s;
public Simple(String s) { // Here is your primary constructor
this.s = s;
}
public Simple(String t, String u) { // Here is your secondary constructor
this(t);
this.s += u;
}
{
s += "B"; // Here is the init block
}
}
除了答案。这是对默认主构造函数的必需调用:
class Sample(private var s: String) { }
就像在Java中一样:
public Sample(String s) {
}
public Sample(String t, String u) {
this(t); // invoke constructor Sample(String s)
}
要避免此调用,可以这样编写:
this(s = "a")
class Sample {
private var s = ""
constructor(t: String) {
s = ...
}
constructor(t: String, u: String) {
s = ...
}
}