[英]what is this() ? can it have multiple parameters?
我遇到了一个代码,其中java中的this()方法采用三个参数,两个是整数,第三个是布尔值。 这到底是什么意思呢 ? this()方法还有其他变体吗? 赫拉是实际的代码。
public SegmentConstructor(int seqNum_, int length_) {
this(seqNum_, length_, false);
}
谢谢..
这意味着当前类中还有另一个具有该签名的构造函数。
public SegmentConstructor(int seqNum_, int length_) {
this(seqNum_, length_, false); // calls the constructor below.
}
public SegmentConstructor(int seqNum_, int length_, boolean required_) {
seqNum = seqNum_;
length = length_;
required = required_;
}
this
方法只是从另一个构造函数中调用类的一个构造函数的一种方法,以帮助避免代码重复。 只能在构造函数的第一行上调用它-决不能在任何其他方法中调用它。
this
只是调用另一个构造函数来运行。 因此,寻找具有该签名的其他构造函数。
如前所述,这将调用另一个构造函数,主要是作为一种便捷方法。
琐碎的例子:
class A {
private int value;
public A(int val) {
value = val;
}
public A() {
this(0); //0 as default
}
}
通常,当最具体的构造函数(具有最多参数的那个构造函数)不只是赋值而是包含更多您不想重复/复制的逻辑时,您确实会使用对this()的调用。
仅仅因为它适合这里: super()
也可以有参数,即,它使用子类的构造函数中的参数调用超类的构造函数。
这是一个构造函数调用。 如果您的类使用不同数量的参数实现不同的构造函数,则可以像这样链接您的构造函数:
class A {
public A(boolean arg) {
...
}
public A() {
this(false); // invokes the constructor with the boolean argument
}
}
有时,创建带有不同参数的私有构造函数并为公共和/或受保护的构造函数提供其他/更少的参数并将对象构造委托给该私有构造函数是有意义的。
重要的是要知道在调用this(...)之前不能放置其他代码。 但是,在调用this(...)之后,您可以执行任何其他构造函数中可以做的所有事情。
编辑:由于this(...)调用构造函数,因此只能从其他构造函数(属于同一类)中调用它。
class MyClass {private int var1; private int var2; 私有布尔标志;
公共MyClass(int var1_,int var2_){this(var1_,var2_,false); }
公共MyClass(int var1_,int var2_,boolean flag_){var1 = var1_; var2 = var2_; 标志= flag_; }
public String toString(){return(new Boolean(flag).toString()); }
公共静态无效main(String [] args){MyClass my = new MyClass(5,6); System.out.println(my); }
}
这样就行了。
this()不是方法,而是一个保留关键字,指向同一类的重载构造函数。 您传递的参数数量应指向该类中定义的现有对应构造函数。
super()也具有语义,但是构造函数是在其父层次结构之一中定义的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.