Мне было интересно, если есть любая разница в производительности между запуском конструктора из конструктора (aka. Делегирование конструктора), а не.Производительность: Должен ли я избегать делегирования конструктора?
Пожалуйста, не интерпретируйте этот вопрос, поскольку я поддерживаю избыточность, например, копирование длинных конструкторов для повышения производительности. Я понимаю, что в большинстве случаев вызов конструктора внутри конструктора желательно по многим причинам, отличным от производительности. (Читаемость, например)
В качестве примера, это Vector3D
класс, который я недавно создал:
public class Vector3D {
public final int x, y, z;
public Vector3D() {
this(0, 0, 0);
}
public Vector3D(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
}
Могу ли я воспользоваться не вызывая this(0, 0, 0)
и просто установив переменные себя, как это?
public class Vector3D {
public final int x, y, z;
public Vector3D() {
this.x = 0;
this.y = 0;
this.z = 0;
}
public Vector3D(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
}
Даже если есть разница, вы не сможете это заметить. – isnot2bad
Не влияет на производительность; у вас просто перегруженная версия ... и если да, то это было бы неуместно (для этого случая). Вы можете попробовать и сделать этот тест самостоятельно –
Все методы, вызываемые из конструкторов, должны быть окончательными (согласно PMD) ... – xerx593