Unterschiedliche Werte in Objekten

SMoeller

Mitglied
Hi,
wie bekomme ich es hin, dass eine Variable in einem Objekt immer einen anderen Wert hat, wie die selbe Variable in einem anderen Objekt?
(Beispiel: Ich habe eine Klasse Schüler, von der ich Objekte erstellen will. Nun habe ich in der Klasse eine Variable id. Diese Variable ist vom Typ int und MUSS in jedem Objekt, das ich erzeuge einen anderen Wert haben).
 
Das musst du an der Stelle sicherstellen an der die Schülerobjekte erstellt werden. Gewöhnlicherweise hat man ein Objekt, meinetwegen Schülerliste, das eine Collection ist, welche die gewünschte Funktionalität besitzt.

Entweder du wählst dir also direkt eine Kollektion und erstellst dir eine Instanz davon oder du vererbst sie dir und erweiterst sie Dir wie du willst.

Das raussuchen der passenden Collection überlasse ich dir selbst, da ich keine Ahnung habe was für Ansprüche du an deine Map,List, Set oder was auch immer hast.

http://java.sun.com/j2se/1.4.2/docs/guide/collections/index.html

Gruß
Dominik
 
Du kannst natürlich auch deine Id abhängig vom Erzeugungsdatum deiner Instanz machen, d.h. Id hängt von z.B. System.currentTimeMillis() ab..

z.B. als String: String id = "id"+System.currentTimeMillis();

Dies baust du in den Konstruktor deiner Klasse ein. Es gibts dann natürlich keine setId()-Methode, damit keiner den id-Wert überschreiben kann.

Falls du allerdings eine multithreaded Applikation erstellst, dann solltest du garantieren, dass nicht zufällig mehrere Instanzen deiner Klasse in derselben Millisekunde erzeugt werden... ansonsten hast du mehrere gleiche Ids!

Weiterhin kannst du einen Generator bauen, der als Singelton in deiner Anwendung läuft und immer eindeutige Ids zurückliefert.

Gruß
Udo
 
Hallo!

Weiterhin kannst du einen Generator bauen, der als Singelton in deiner Anwendung läuft und immer eindeutige Ids zurückliefert.
Dazu bietet sich beispielsweise die UUID (ab Java 5) oder (innerhalb einer JVM) die VMID an:

Java:
package de.tutorials;

import java.rmi.dgc.VMID;
import java.util.UUID;

/**
 * <p>TODO Description of the type</p>
 * @author Thomas.Darimont
 */
public class UUIDExample {
  /**
   * <p>TODO Description of method</p>
   * @param args
   */
  public static void main(String[] args) {
    System.out.println(UUID.randomUUID()); // >= Java 5
    System.out.println(new VMID()); // <= Java 5
  }
}

Oder eben ein entsprechend sychronisierter Zähler / (oder ein AtomicInt / AtomicLong)...

Gruß Tom
 

Neue Beiträge

Zurück