GregorianCalendar.getInstance()

Status
Nicht offen für weitere Antworten.

Samurider

Aktives Mitglied
Hallo,

Kann mir jmd. erklären, ob folgendes Sinn macht,
und warum man so etwas machen sollte?
Code:
Calendar cal = GregorianCalendar.getInstance();

Wird damit etwas vorinitialisiert, oder macht so eine Anweisung überhaupt keine Sinn?
 
B

bygones

Gast
es macht natürlich sinn. Die Klasse ist als Singelton implementiert, d.h. man kann nur eine instanz der Klasse erzeugen - und die holst du dir mit getInstance().

Codemäßig heißt das, dass der Konstruktor private ist und die Klasse eine statische variable von sich selbst beinhaltet. Wenn du getInstance() aufrufst, wird getestet, ob die Variable noch null ist, wenn ja wird sie initialisiert. Dann bekommst du die Variable zurück....

Hat versch. Sinn - meines Wissens allen voran einen Sicherheitsaspekt, aber meiner Ansicht nach einen logischen. Damit erzwingst du einfach, dass nur eine Instanz von einer Klasse erzeugen werden kann.....
 

mariopetr

Bekanntes Mitglied
deathbyaclown hat gesagt.:
es macht natürlich sinn. Die Klasse ist als Singelton implementiert, d.h. man kann nur eine instanz der Klasse erzeugen - und die holst du dir mit getInstance().

das ist absoluter unsinn.

deathbyaclown hat gesagt.:
Codemäßig heißt das, dass der Konstruktor private ist und die Klasse eine statische variable von sich selbst beinhaltet. Wenn du getInstance() aufrufst, wird getestet, ob die Variable noch null ist, wenn ja wird sie initialisiert. Dann bekommst du die Variable zurück....

und es wird immer schlimmer. getInstance() wird statisch in Calendar implementiert und gibt eine konkrete instance einer ableitung von Calendar (meist Gregorian, bei den asiaten kann das aberschon ganz anders aussehen).

aus der apidoc:
"Like other locale-sensitive classes, Calendar provides a class method, getInstance, for getting a generally useful object of this type. Calendar's getInstance method returns a Calendar object whose time fields have been initialized with the current date and time:
Calendar rightNow = Calendar.getInstance();
A Calendar object can produce all the time field values needed to implement the date-time formatting for a particular language and calendar style (for example, Japanese-Gregorian, Japanese-Traditional). Calendar defines the range of values returned by certain fields, as well as their meaning. For example, the first month of the year has value MONTH == JANUARY for all calendars. Other values are defined by the concrete subclass, such as ERA and YEAR. See individual field documentation and subclass documentation for details. "

ps: vieleicht sollte man garnicht antworten, ehe man solchen mist verbreitet
 
B

bygones

Gast
@mariopetr:

vielen Dank für den netten Kommentar - wenn ich meine eine Antwort zu wissen dann schreib ich sie - ich habe die Weisheit nicht gepachtet und behaupte dies auch nicht.

*kopfschütteln*

schnuffie hat recht - arroganz
 

Samurider

Aktives Mitglied
Ok, danke dafür.
Wenn ich es also richtig verstehe, bekomme ich eine instance vom Typ Calendar, die mit Inhalten vorinitialisiert ist.
Wie die Daten gesetzt sind entscheidet die abgeleitete Klasse, die ich benutze -- in meinem Fall der GregorianCalendar.
 

mariopetr

Bekanntes Mitglied
nicht ganz. Calendar.getInstance() retourniert eine instance vom type [irgendwas]. irgendwas ist dabei eine von Calendar abgelittene kalsse. welche zu den systemlocales apsst und mit aktuellen werten vorinitialisiert ist. sinn und zweck ist es, das du in deinem programm Calendar benutzt, ohne zu wissen welche konkrete implementation dahinterliegt. dann ist es naemlich wurst, ob dein programm in d, china, israel oder so laeuft.
 

Samurider

Aktives Mitglied
GregorianCalendar.getInstance() liefert mir ein vorinitialisiertes Object vom Typ GregCal.
Dann ist mir nicht klar, warum ich dieses Object danach wieder in einer Variable vom Typ Calendar speichere.

"GregorianCalendar cal = GregorianCalendar.getInstance();"
macht mehr Sinn als
"Calendar cal = GregorianCalendar.getInstance();"

Ich glaube, ich raffe es nicht. Vielleicht sollte ich mir ein paar Tutorials durchlesen um dahinter zu kommen.
 

mariopetr

Bekanntes Mitglied
fuere den selben code mal auf nem asiatischen pc aus, dann bekommst du keinen gregoriancalendar. auf nem normal europaeischem oder us sys wirst du wohl immer gregorian bekommen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela GregorianCalendar.getTimeInMillis() Allgemeine Java-Themen 19
B SimpleDateFormat oder doch lieber GregorianCalendar Allgemeine Java-Themen 3
kodela Eigenartige Datumsberechnung über GregorianCalendar Allgemeine Java-Themen 15
Q GregorianCalendar Methode add liefert komische Werte Allgemeine Java-Themen 3
E GregorianCalendar Wochentag Allgemeine Java-Themen 3
P Fehler im GregorianCalendar Allgemeine Java-Themen 8
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M Problem mit dem GregorianCalendar Allgemeine Java-Themen 2
J GregorianCalendar wil nich so recht as ick wol will Allgemeine Java-Themen 6
T GregorianCalendar - kein Februar Allgemeine Java-Themen 6
L Probleme mit GregorianCalendar Allgemeine Java-Themen 4
C Calendar bzw. GregorianCalendar Klasse Allgemeine Java-Themen 12
M Seltsamer Fehler bei GregorianCalendar Allgemeine Java-Themen 2
T KW=1 Jahr=2008 Monat=Dezember => GregorianCalendar Allgemeine Java-Themen 8
B GregorianCalendar UNIX Allgemeine Java-Themen 6
ARadauer GregorianCalendar Allgemeine Java-Themen 8
A Verständnisproblem mit GregorianCalendar Allgemeine Java-Themen 10
A Fehler bei Rechnung mit GregorianCalendar Allgemeine Java-Themen 6
D GregorianCalendar std zurück Allgemeine Java-Themen 7
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
N GregorianCalendar Allgemeine Java-Themen 2
L String ==> Date ==> GregorianCalendar Allgemeine Java-Themen 3
F Zeit errechnen mit GregorianCalendar Allgemeine Java-Themen 8
F Datum in GregorianCalendar Allgemeine Java-Themen 3
N Unterschied Calendar und GregorianCalendar Allgemeine Java-Themen 9
N Guice - Ohne injector.getInstance Allgemeine Java-Themen 2
B Cipher.getInstance Aufruf sehr langsam Allgemeine Java-Themen 2
S dvbscan mit Runtime.getInstance().exec() ausführen ? Allgemeine Java-Themen 24

Ähnliche Java Themen

Neue Themen


Oben