Handle Mutable Objects

BigPun

Mitglied
Hi habe probleme im Umgang mit mutable Objects. Zum verständnis nicht das ich da was falsch verstanden habe. Mutable Objects sind doch referencen auf eine instanz eines objectes welche inhalte verändert werden können?!
Habe hier mal ein Beispielcode wo mein FindBugs meckert (Malicious_Code)

Java:
public TimeConstructor(Date end, Long interval,
			Date start) {
		this.end = end;                           
		this.start = start;
	}

Java:
	public Date getEnd() {
		return end == null ? null : (Date) end.clone();
	}

	public void setEnd(Date end) {
		this.end = end;
	}

Java:
	public Date getStart() {
		return start == null ? null : (Date) start.clone();
	}

	public void setStart(Date start) {
		this.start = start;
	}

In den Get-Methoden habe ich den ersten Schritt gemacht, in dem ich das Objekt gecloned habe mittels clone()!
Nun müsste ich im zweiten Schritt wahrscheinlich irgendwas in den Set-Methoden und im Konstruktor ändern, da häng ich gerade?! Java bietet mir Extracted an, aber dann müsste ich jedes Object extracten, das scheint mir irgendwie aufwändig....
Vielleicht hatte jemand von euch ein ähnliches Problem?
 
G

Gast2

Gast
Im Konstruktor kannst du start und end auch noch klonen. Sonst könnte jemand den Konstruktor aufrufen und im nachhinein die Date Objekte ändern, was dann auch Konsequenzen auf deine Instanz hätte. Selbiges gilt für die set-Methoden.
 

BigPun

Mitglied
Okay hab es aber nicht wie in den get-Methoden gemacht

Java:
public TimeConstructor(Date end, Long interval,
            Date start) {
        this.end = (Date) end.clone();                         
        this.start = (Date) start.clone();


   public void setEnd(Date end) {
        this.end = (Date) end.clone();   
    }
    }

FindBugs meckert zumindest nicht ^^
 

Ähnliche Java Themen

Neue Themen


Oben