ID-generator für die Objekte erstellt
Brauche ich eine Klasse erstellt Objekte Zuweisung einer ID für jedes Objekt erstellt. Diese ID ist wie üblich ein int-Attribut der Klasse. Ich möchte diesen Wert (ID) erhöht werden jedes mal, wenn ein Objekt erstellt und dann zugewiesen werden, das Objekt, beginnend mit 1. Es fällt mir auf, dass ich noch eine statische int-Attribut.
Wie kann ich die initialisieren das static-Attribut?
Sollte ich eine separate Methode zu tun, die Schrittweite der ID (als ID-generator), die aufgerufen wird, innerhalb eines Konstruktors?
Was ist im Allgemeinen die effektivste und gut durchdachten Art und Weise zu implementieren, dass?
- Nur ein Kommentar: Wenn man in einem server-side-Cluster-Umgebung dieser Ansatz wird scheitern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau wie Sie erwähnen, verwenden Sie eine
static int
für die id, und erhöhen Sie beim erstellen neuer Objekte.Bitte beachten Sie, dass Sie brauchen, um
counter++
wennMyObject
wird erstellt, indem mehrere threads (zum Beispiel mitAtomicInteger
wie die anderen Antworten deuten).Könnte man auch versuchen java.util.gleichzeitige.AtomicInteger, die generiert IDs in
Können Sie diese in einem statischen Kontext wie:
Ich würde vorschlagen, zu verwenden
AtomicInteger
, die thread-sicher istgetAndIncrement()
die IDs beginnen bei null, aber wenn SieincrementAndGet()
die IDs starten von einem