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

Java 这是什么?它可以有多个参数吗?,java,this,Java,This,我遇到一段代码,其中java中的这个方法采用三个参数,两个是整数,第三个是布尔值。 这到底是什么意思?这种方法还有其他变体吗? Hera是实际代码 public SegmentConstructor(int seqNum_, int length_) { this(seqNum_, length_, false); } 谢谢。这意味着当前类中有另一个构造函数具有该签名 public SegmentConstructor(int seqNum_, int length_

我遇到一段代码,其中java中的这个方法采用三个参数,两个是整数,第三个是布尔值。 这到底是什么意思?这种方法还有其他变体吗? Hera是实际代码

 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_;
}

此方法只是从另一个构造函数中调用类的一个构造函数的一种方法,以帮助避免代码重复。它只能在构造函数的第一行调用,而不能从任何其他方法中调用。

这只是调用另一个构造函数来运行。因此,寻找具有该签名的其他构造函数。

这是一个构造函数调用。如果您的类使用不同数量的参数实现不同的构造函数,则可以如下方式链接构造函数:

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_;
}
class A {
    public A(boolean arg) {
        ...
    }

    public A() {
        this(false); // invokes the constructor with the boolean argument
    }
}
有时,创建一个使用不同参数的私有构造函数,并为公共和/或受保护的构造函数提供其他/更少的参数,并将对象构造委托给该私有构造函数是有意义的

重要的是要知道,在调用此…之前不能放置任何其他代码。。。。然而,在调用这个…,你可以在任何其他构造函数中做任何你能做的事情


编辑:既然。。。调用构造函数时,只能从属于同一类的其他构造函数中调用它。

如前所述,这调用另一个构造函数,主要是作为一种方便的方法

简单的例子:

class A {
 private int value;

 public A(int val) {
  value = val;
 }

 public A() {
  this(0); //0 as default
 }
}
通常,当具有最多参数的最特定构造函数不只是赋值,而是包含更多您不想重复/复制的逻辑时,您会使用对该构造函数的调用

因为它适合这里:super也可以有参数,也就是说,它使用子类的构造函数中的参数调用一个super类的构造函数。

class MyClass { 私有int var1; 私有int var2; 私有布尔标志

公共MyClassint var1,int var2_ { 这个var1,var2,false; }

公共MyClassint var1,int var2,布尔标志_ { var1=var1; var2=var2; flag=flag; }

公共字符串toString { 返回新的Booleanflag.toString; }

公共静态无效字符串[]args { MyClass my=新MyClass 5,6; System.out.printlnmy; }

}


这不是一个方法,而是一个指向同一类重载构造函数的保留关键字。 传递的参数数量应指向类中定义的现有相应构造函数


super也有语义,但是构造函数是在其父层次结构中定义的。

oh!谢谢你的快速回复。。。我现在明白了..所以这个int,int,bool调用了其他具有类似参数的构造函数…非常感谢..如果您将代码缩进四个空格,它将通过StackOverflow格式化为代码。+1:关于如何使用它以及super关键字的评论很好。