我遇到了这段代码,我不退出这一行来理解它的含义或它在做什么。
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