У меня есть конструктор, который получает объекты в качестве параметров функции. У меня есть 2 способа написать это, но я хочу убедиться, что я понимаю разницу между этими двумя способами. Я также хочу знать, какой путь лучше:
public class Line {
private Point start;
private Point end;
/**
* First method: copy the data from each point with get functions
*/
public Line(Point start, Point end) {
this.start = new Point(start.getX(), start.getY());
this.end = new Point(end.getX(), end.getY());
}
/**
* Second method: equal the class variables to the parameters from the function
*/
public Line(Point start, Point end) {
this.start = start;
this.end = end;
}
Из того, что я понимаю, в первом методе я выделяю память для каждой точки и копирую данные из объектов.
Во втором методе я указываю на память существующих объектов, и поэтому, если я использую этот конструктор, а в другой функции я изменяю объекты, изменение также появится в строке.
Я думаю, что Первый способ лучше и безопаснее, но мне было интересно, правда ли это. Спасибо!