Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Java Date immutable
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Java Date immutable
 
Autor Nachricht
narakirs
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 09.05.2007
Beiträge: 14

BeitragVerfasst am: 20 Jun 2007 - 21:57:42    Titel: Java Date immutable

hallo

Ich möchte Date aus java.util.Date immutable machen.
Reichte es, wenn ich im Datenfeld final setze oder muss ichs im Konstriktor machen.
Also ein bsp.:

public class MeinGeburtstag{

private final Date geburtstag;

MeinGeburtstag(final Date gb){
geburtstag = gb;
}

Ist nachdem Code geburtstag immutable???

Noch eine Frage: Wie kann ich geburtstag mit dem aktuellen Datum vergleichen???

Danke im Voraus

narakirs
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 20 Jun 2007 - 22:11:43    Titel:

Es ist nicht möglich, das Object immutable zu kriegen. final hindert dich nicht daran, Methoden des Objekts aufzurufen - bei Date gibts da ne Menge setter... Das final bedeutet nur, dass du die Referenz nicht durch ein neues Date-Objekt ersetzen darfst.

Wenn du ein unveränderbares Datum brauchst, bleibt also nur, eine eigene Klasse zu schreiben, die die interessanten Operationen an Date durchreicht, ansonsten aber keine Veränderung zulässt.


Vergleiche... Nun, ich vermute, dass Date hier entsprechende Methoden mitbringt. Ich würde da aber empfehlen, direkt ins API zu schauen...
narakirs
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 09.05.2007
Beiträge: 14

BeitragVerfasst am: 20 Jun 2007 - 23:27:01    Titel:

ja stimmt, man kann nur die Referenz des Objekts nicht ändern. Aber das referenzierte Objekt kann man verändern.
Es muss doch eine andere Möglichkeit geben, ohne eine Klasse für Date zu schreiben zu müssen.
Was ist wenn ich mit dem übergebene Referenz ein neues Objekt mit dem selben Wert erstell. Wäre dann das neu erstelle Objekt immutable???
narakirs
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 09.05.2007
Beiträge: 14

BeitragVerfasst am: 21 Jun 2007 - 21:30:29    Titel:

Könnte dies hier klappen?

MeinGeburtstag(final Date gb){
geburtstag = (Date) gb.clone();
}
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 21 Jun 2007 - 22:09:36    Titel:

Ums nochmal ganz deutlich zu sagen: Du kannst mit final nur den Wert schützen, der in der entsprechenden Variable steht. Bei allen Referenztypen ist dieser Wert die Referenz auf das Objekt.
Ein Objekt selber immutable zu kriegen funktioniert nur dadurch, dass es so programmiert ist, dass sein Zustand nach dem Erzeugen nicht mehr geändert werden kann. Das heißt insbesondere, keine setter.

Das bedeutet aber nicht, dass du das Date neu schreiben musst. Ein Wrapper für die notwendigen Methoden reicht völlig aus.


PS: Zur Vollständigkeit halber: Unter bestimmten Umständen ist es möglich, Objekte im Zusammenhang mit Generics immutable zu kriegen. So ist zum Beispiel LinkedList<? extends Object> eine Liste, die nicht weiter verändert werden kann. Ist aber wohl mehr Bug als Feature und hilft in diesem Fall auch nicht weiter...
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Java Date immutable
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum