什么是“这个()”方法是什么意思?(What does “this()” method mean?)

2019-08-20 04:02发布

我跑进这个代码块,有这一条线,我不放弃明白其中的含义或它在做什么。

public Digraph(In in) {
    this(in.readInt()); 
    int E = in.readInt();
    for (int i = 0; i < E; i++) {
        int v = in.readInt();
        int w = in.readInt();
        addEdge(v, w); 
    }
}

我明白this.method()this.variable的,但什么是this()

Answer 1:

这是构造函数重载:

public class Diagraph {

    public Diagraph(int n) {
       // Constructor code
    }


    public Digraph(In in) {
      this(in.readInt()); // Calls the constructor above. 
      int E = in.readInt();
      for (int i = 0; i < E; i++) {
         int v = in.readInt();
         int w = in.readInt();
         addEdge(v, w); 
      }
   }
}

你可以说这个代码是一个构造函数,而不是由缺少返回类型的方法。 这是非常类似调用super()在构造函数的第一线,以初始化扩展类。 你应该调用this()或任何其他重载this()在构造函数的第一行,从而避免构造函数代码重复。

您还可以看看这篇文章: 构造在Java中超载-最佳实践



Answer 2:

使用这个()作为这样的一个功能,本质上调用类的构造函数。 这使您可以在一个构造函数中的所有通用的初始化和对他人的专业。 因此,在这段代码例如,调用this(in.readInt())被调用具有一个int参数的构造函数有向图。



Answer 3:

此代码段是一个构造函数。

这调用this调用同一个类的另一个构造

public App(int input) {
}

public App(String input) {
    this(Integer.parseInt(input));
}

在上面的例子中,我们有一个构造函数的int和一个采用一个String 。 这需要一个构造函数String转换Stringint ,然后委托给int构造。

需要注意的是另一个构造函数或超类构造函数(调用super()必须在构造函数的第一行。

也许看看这对构造函数重载的更详细的解释。



Answer 4:

这几乎是相同的

public class Test {
    public Test(int i) { /*construct*/ }

    public Test(int i, String s){ this(i);  /*construct*/ }

}


Answer 5:

调用this实质上调用类的构造函数。 例如,如果你扩展的东西,不是随add(JComponent) ,你可以这样做: this.add(JComponent).



Answer 6:

类有向图的其它构造与int参数。

Digraph(int param) { /*  */ }


Answer 7:

构造函数重载:

例如:

public class Test{

    Test(){
        this(10);  // calling constructor with one parameter 
        System.out.println("This is Default Constructor");
    }

    Test(int number1){
        this(10,20);   // calling constructor with two parameter
        System.out.println("This is Parametrized Constructor with one argument "+number1);
    }

    Test(int number1,int number2){
        System.out.println("This is Parametrized  Constructor  with two argument"+number1+" , "+number2);
    }


    public static void main(String args[]){
        Test t = new Test();
        // first default constructor,then constructor with 1 parameter , then constructor with 2 parameters will be called 
    }

}


Answer 8:

this(); 是它是用来调用另一个构造中的一类,例如构造: -

class A{
  public A(int,int)
   { this(1.3,2.7);-->this will call default constructor
    //code
   }
 public A()
   {
     //code
   }
 public A(float,float)
   { this();-->this will call default type constructor
    //code
   }
}

注:我没有使用this()的默认构造函数的构造,因为它会导致死锁状态。

希望对你有帮助:)



文章来源: What does “this()” method mean?