Eindeutige ID erzeugen?



  • Hallo,

    ich generiere sehr viele Objekte einer bestimmten Klasse. Das Programm wird sehr lange laufen und zwischendurch immer mal wieder neue Objekte erzeugen. Zur besseren Übersicht möchte ich den Objekten eine Art ID, einen Namen geben.

    Meine Frage ist: Wie macht man das normalerweise? Spontan hätte ich gedacht, man arbeitet mit einem Timer und vergibt die Namen z.B. nach Timerstand. Aber wenn zwei Objekte fast zeitgleich angelegt werden steh ich auf dem Schlauch.

    Sehr schön fände ich die Lösung, die Objekte einfach durchzunummerieren. Dazu bräuchte ich dann aber eine statische Klassenvariable, nicht wahr? Kann man die im Bedarfsfall mit abspeichern?



  • Was mir gerade noch einfällt: Wenn ich tatsächlich einen Integer Zähler implementiere: Irgendwann ist doch dann Sense, oder? Dann hab ich ein Problem, wenn ich die größtmögliche Integer-Zahl erreiche, oder?



  • dann nimm doch nen long (2^63 -1) sollte wohl reichen 😉



  • Sehr schön fände ich die Lösung, die Objekte einfach durchzunummerieren. Dazu bräuchte ich dann aber eine statische Klassenvariable, nicht wahr? Kann man die im Bedarfsfall mit abspeichern?

    Stimmt - so geht das am einfachsten.
    Was meinst du mit "abspeichern"? beim Beenden des Programms? MIt Serialisierung kein Problem.

    Was noch anzumerken währe:
    Du bekommst ein Problem, wenn dein Programm mehrmals läuft.



  • Danke Jungs!

    Also das Programm wird LANGE laufen (2-3 Tage am Stück sollten kein Problem sein) und fast ausschließlich diese komplexen Objekte erzeugen und bewerten. 2 hoch 63 ist viel, aber ich kann echt nicht einschätzen, wie viele Objekte Java in 2-3 Tagen Dauerlauf erzeugen kann.

    Kann man eigentlich auch irgendwie Hex-Zahlen durchlaufen? Würd das was bringen?

    Und mit Speichern mein ich genau das. Klassenvariablen können auch serialisiert werden?


Anmelden zum Antworten