我遇到了这段代码,我不退出这一行来理解它的含义或它在做什么。

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()是什么?

最佳答案

这是构造函数重载:

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()的任何其他重载),从而避免构造函数代码重复。

您也可以看看这篇文章:Constructor overloading in Java - best practice

07-27 22:57