在另一个构造函数中使用"this"

MC *_*ror 3 java constructor this

假设你有一个带有这个构造函数的类:

public SomeObj(int x, int y) {
    this.x = x;
    this.y = y;
}
Run Code Online (Sandbox Code Playgroud)

都好.但是现在如果你想克隆对象,我希望构造函数接受一个带有该类型对象的参数,因此在构造函数中可以复制所有(必要的)字段.

public SomeObj(SomeObj objectToClone) { ... }
Run Code Online (Sandbox Code Playgroud)

但是现在以下哪两种方式更好?有哪些优点和缺点(性能(字节代码),可读性......)?

// 1
public SomeObj(SomeObj objectToClone) {
    this.x = objectToClone.x;
    this.y = objectToClone.y;
}

// 2
public SomeObj(SomeObj objectToClone) {
    this(objectToClone.x, objectToClone.y);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 13

亲自,我会和后者一起去.

在可能的情况下,我尝试使一个构造函数具有"真实"的主体,并使所有其他构建者委托给它.这并不总是可行的 - 特别是,不同的构造函数可能需要委托给不同的超级构造器 - 但很高兴知道有一个地方可以放置额外的初始化,日志记录,断点等等.