Hallo zusammen,
kurze Frage zur objektorientierten Programmierung in Java.
Ich möchte wissen, wie ich die Anzahl bisher erzeugter Objekte zählen kann und zwar brauche ich für jedes erzeugte Objekt eine Zahl. Beginnend mit 1 und es soll die Zahl immer um 1 erhöht werden. Somit bekommen 3 erzeugte Objekte die Nummern 1, 2 und 3...
Wäre super, wenn mir da schnell jemand helfen kann. Vielen Dank schon mal im Voraus!
Seite 1 von 1
[java/oop] Anzahl Ersteller Objekte Zählen
#1
geschrieben 12. Dezember 2008 - 18:01
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Anzeige
#2
geschrieben 12. Dezember 2008 - 18:22
Schon mal versucht das ganze mit der Relection-API anzugehen?
#3
geschrieben 12. Dezember 2008 - 18:29
Du könntest eine abstrakte Oberklasse mit statischer, protected Zählvariable erstellen und alle Klassen davon erben lassen. Die müssen dann in ihrem Konstruktor den Zähler eben erhöhen und sich evtl. ihre Nummer merken.
Falls du Objekt-Referenzen zählen willst ist das schon eine andere Sache. Ich glaube da gibt es ein paar schmutzige Tricks mit denen man die Metadaten des GarbageCollectors durchsuchen kann, aber prinzipiell sollte man davon die Finger lassen.
Falls du mit irgendeinem Framework arbeitest in dem dein Programm läuft, kannst du ja mal schauen ob das evtl. Interceptors hat. Normales Java hat sowas natürlich nicht.
Eine andere saubere Möglichkeit wäre ein AOP-Framework (aspektorientierte Programmierung) wie AspectJ zu nehmen. Da sollte sich sowas ziemlich generisch lösen lassen ohne wie in Vorschlag 1 auf POJOs zu verzichten.
Falls du Objekt-Referenzen zählen willst ist das schon eine andere Sache. Ich glaube da gibt es ein paar schmutzige Tricks mit denen man die Metadaten des GarbageCollectors durchsuchen kann, aber prinzipiell sollte man davon die Finger lassen.
Falls du mit irgendeinem Framework arbeitest in dem dein Programm läuft, kannst du ja mal schauen ob das evtl. Interceptors hat. Normales Java hat sowas natürlich nicht.
Eine andere saubere Möglichkeit wäre ein AOP-Framework (aspektorientierte Programmierung) wie AspectJ zu nehmen. Da sollte sich sowas ziemlich generisch lösen lassen ohne wie in Vorschlag 1 auf POJOs zu verzichten.
#4
geschrieben 12. Dezember 2008 - 18:42
Ich hab's grad hinbekommen durch probieren, es funktioniert so:
So bekommt jedes erzeugte Objekt automatisch eine Nummer, beginnend mit 1 und jeweils um 1 erhöhend. Ich hatte den Fehler davor, dass ich die Variable als public static int nextNumber; deklariert hatte und dann ging es nicht. Kann mir jemand erklären, was das 'public' exakt bewirkt?
public class Klasse { static int nextNumber; int number; // Konstruktor public Klasse() { nextNumber++; number = nextNumber; } }
So bekommt jedes erzeugte Objekt automatisch eine Nummer, beginnend mit 1 und jeweils um 1 erhöhend. Ich hatte den Fehler davor, dass ich die Variable als public static int nextNumber; deklariert hatte und dann ging es nicht. Kann mir jemand erklären, was das 'public' exakt bewirkt?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
#5
geschrieben 13. Dezember 2008 - 22:40
public ist ein zugriffsmodifikator und bewirkt, dass sowohl klassen, die von dieser klassen erben, als auch klassen, die sich im selben oder auch in einem anderen paket befinden, diese methode (auch bei variablen) sehen können. genaueres findest du im openbook auf galileocomputing.de.
Thema verteilen:
Seite 1 von 1