繁体   English   中英

这是什么() ? 它可以有多个参数吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM