Klonowanie i kopiowanie obiektu Date

0
public class Data {
	public static Date klonowane() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.DAY_OF_MONTH,-1);
		
		Date date1 = new Date();
		Date kopia = date1;
		Date klon =  (Date) date1.clone();
		date1 = cal.getTime();
		return date1;
	}


}

Słuchajcie jako, że nie jestem geniuszem z Javy mam pytanie dlaczego po przypisaniu kopia = date1 po zmianie wartości date1 nie zmienia się kopia ?

0

Pytanko nieaktualne temat rozwiązałem do date1 jest przypisany nowy obiekt aby zadziałało tak jak pisałem wcześniej należałoby zrobić:

dat1.setTime(cal.getTime());
1

Coś Ty tu chłopaku nabroił? Po co Ci kopia i klon, skoro nigdzie ich nie używasz? W ogóle mam wrażenie, że konstruktor do date1 też nie jest potrzebny, bo pewnie cal.getTime zwraca obiekt Date.

Poza tym - na tym polega klonowanie. Jeśli masz owcę, która nazywa się Zosia i ją sklonujesz, to możesz nadać jej imię Gosia. I teraz jeśli ostrzyżesz Zosię, to przecież Gosia nadal będzie miała wełnę. To jest zupełnie osobny byt. Na tym polega klonowanie.

0

Już odpowiadam, bardziej chodziło mi o to aby zobaczyć samo działanie w Expresion niż sama sensowność całości. Bardzo dziękuję za odpowiedź.

1

A generalnie to zamiast Date używaj LocalDate. LocalDate jest immutable i nie będziesz musiał robić defensywnego kopiowania w setterach / getterach.

0

Bardzo dziękuje za uwagę pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1