Objekte einer Klasse zählen

Status
Nicht offen für weitere Antworten.

Crunker

Mitglied
Hallo zusammen,

ich habe eine Frage bezüglich der Objekte in Java.
Ich wollte fragen ob es irgenwie möglich ist die Anzahl der Objekte einer Klasse zu zählen und eventuell die einzelnen Namen noch auszugeben. Die Ausgabe der Namen ist mir nicht so wichtig, es geht vorallem um die Anzahl :!:
Konkret ist meine Frage ob es irgendeinen speziellen Befehl gibt, mit der man die Objekte zählen kann, oder ob jemand den Code für eine Methode kennt, welche diese Funktion erfüllt? Vielleicht mit Beispielcode.

Danke schon mal im Vorraus, wenn ihr noch Informationen braucht, nur anschreiben, bin heute den ganzen Tag im Forum!!!

Gruss
Crunker
 
G

Guest

Gast
Einfach ne
Code:
static
Variable und diese im Konstruktor jeweils um 1 erhöhen.
 

Leroy42

Top Contributor
Du kannst soetwas nur bei selbstdefinierten Klassen einführen.

Code:
class MyClass {
  private static in numInsts;
  public MyClass() {
    numInsts++;
    // ...
  }
}

Allerdings bekommst du keine (sichere) Möglichkeit
die vom Garbage Collector freigegebenen Instanzen
abzuziehen.
 
G

Guest

Gast
Ist auch kein Problem, einfach im Destruktor wieder abziehen.[/quote]
 
G

Guest

Gast
Beispiel:
Code:
public class Zaehler 
{
	public static int zaehl = 0;
		
	Zaehler()
	{
		zaehl+=1;		
	}
	
	protected void finalize()
	{
		zaehl-=1;
	}

}
 

WieselAc

Top Contributor
Wobei man erwähnen sollte, dass die Sache mit "Destruktor" etwas schwammig ist, da dieser nicht zwangsläufig ausgeführt wird bzw. man keine feste Aussage über den Zeitpunkt des Aufrufes machen kann. Deshalb sollte man den "Destruktor" also nur sehr vorsichtig und wohl überlegt einsetzten. Er ist nicht analog zum c/c++ destruktor zu sehen.
 

Ark

Top Contributor
@Leroy42: Sieht ganz so aus, als fehlte der synchronized-Block um posting.php. ;)

MfG
Ark
 

Crunker

Mitglied
Ihr hab mir noch gedacht, es währe vielleicht möglich mit einer Testklasse, welche durch eine Methode die Objekte einer anderen beliebigen Klasse zählt und dieser der Testklasse zurückgibt und diese gibt dann die Variable aus.
Währe dies umsetzbar? Wie sollte man das am besten tun?

Danke für eure Antworten
 

WieselAc

Top Contributor
Nicht das du jetzt verwirrt bist. Mit der static variablen kannst du schon das machen was du willst. Du kannst damit zählen wieviele Objekte erstellt wurde. Wie beschrieben einfach eine variable private static counter deklarieren und sie im Konstruktr um 1 inkrementieren. Du bekommst nur etwas mehr auswandm, wenn du gelöschte Objekte wieder abziehen möchtest. Du kannst das mit finalize probieren, ist aber nicht zwingend erfolgreich. Alternative solltest du dich mal über die hier schon erwähnten PhantomReferences umsehen. Ist allerdings nicht so "simple" zu implementieren wie ein static counter. Es kommt halt drauf an was du machen willst.

Wenn genau weißt wannein Objekt erzeugt wird und wann du es wieder löschst, kannst du natürlich auch die von dir beschriebe Variante mit einer "Zähl-Methode" verwenden. Wobei ich an deiner Stelle dann wieder zum static counter zurückgehen würde, den ich dann nur über eine Methode um eins explizit verringern würde, wenn ein Objekt zerstört wird.
 

Leroy42

Top Contributor
Vielleicht eine Art Preisausschreiben?

Das millionste erzeugte Objekt bekommt umsonst einen
Programmlaufzeitlangen Schutz vor dem Garbage Collector? ???:L
 

LoN_Nemesis

Bekanntes Mitglied
Seid ihr sicher, dass das mit der static Variablen, die im Konstruktor erhöht wird funktioniert?

Ich wollte sowas auch mal machen vor längerer Zeit. Es gab eine Klasse Node und jeder Node musste wissen wieviel andere Nodes es gibt. Dabei konnten nur Nodes hinzukommen, aber keine verschwinden. In der static Variablen stand aber immer ein zu hoher Wert, ich habe mir das damals so erklärt, dass bei einem Aufruf wie

Code:
Node[] gitter = new Node[20];

auch der Konstruktor aufgerufen wird.
 

wranger

Mitglied
Moin

Natürlich wird der Konstruktor bei diesem Aufruf mit aufgerufen.

Nach meinen Kentnissen müssten sich in deinem Array referenzen auf 20 Objekte vom Typ Node befinden. Die dann ja auch schon alle schön ansprechen kannst. Gell?

MfG
wranger
 
R

Roar

Gast
genau, und wenn deine klasse node zum beispiel so aussieht:

class Node {
public Node(int wert) {
...
}
}

dann rät java bestimmt welchen wert er dem konstruktor übergeben soll ;)
der konstruktor wird bei new Node[20] natürlich nicht aufgerufen und danach ist auch noch kein wert im array initialisiert, aufdeutsch alles null :O
 

WieselAc

Top Contributor
Naja nicht so ganz bei dem Aufruf werden die Objekte noch nicht erzeugt. Im Array steht noch überall null drin. Erst wenn du das Array instanziert hast (z.B.: in einer for schleife oder so) werde die Objekte wirklich angelegt und somit der Konstruktor gerufen. Im Beispiel sollte also der counter immer noch 0 sein.
 

Leroy42

Top Contributor
In Smalltalk hat man da totale Freiheit.

Hab' mal direkt in der Klasse Object eine Map eingebaut, die für
jede Klasse, egal ob eigene oder System-Klasse, eine Liste der
von dieser Klasse erzeugten Objekte gehalten hat.

Ist schon interessant zu verfolgen wieviele 10,000 Objekte pro
Sitzung generiert werden. :cool:
 

wranger

Mitglied
Roar hat gesagt.:
genau, und wenn deine klasse node zum beispiel so aussieht:

class Node {
public Node(int wert) {
...
}
}

Wohl nicht ... aber den Standardkonstruktor könnt er aufrufen ...
Code:
class Node {
  private static int counter;
  public Node() {
      counter++;
  }
}
So war zumindest meine Überlegung ...

Naja nicht so ganz bei dem Aufruf werden die Objekte noch nicht erzeugt. Im Array steht noch überall null drin. Erst wenn du das Array instanziert hast (z.B.: in einer for schleife oder so) werde die Objekte wirklich angelegt und somit der Konstruktor gerufen. Im Beispiel sollte also der counter immer noch 0 sein.

Das wusste ich nicht mehr ... erscheint aber auch logisch ;)

MfG
Wranger
 

Crunker

Mitglied
Danke für die Antworten, ich werde es mit der Static Variable mal versuchen, ich denke das sollte machbar sein. Ich bin halt erst an den Java Grundlagen, aber ich hab ja noch bis nächsten Sommerzeit mich in die Materie zu vertiefen.
Ich brauche das Objektezählen, für eine Art Statistik, ist eine Aufgabe, welche ich habe. Dazu habe ich gedacht, dass es nützlich währe zu wissen wieviele Objekte eine Klasse hat, denn eine Klasse weiss ja nicht was für Objekte von ihr abstammen!!

Gruss
 

AlArenal

Top Contributor
Leroy42 hat gesagt.:
In Smalltalk hat man da totale Freiheit.

Hab' mal direkt in der Klasse Object eine Map eingebaut, die für
jede Klasse, egal ob eigene oder System-Klasse, eine Liste der
von dieser Klasse erzeugten Objekte gehalten hat.

Ist schon interessant zu verfolgen wieviele 10,000 Objekte pro
Sitzung generiert werden. :cool:

Smalltalk ist eben schon ein ganzes Stück anders. Auch Klassen sind Objekte und wer an eigenen oder vorhandenen Klassen arbeitet, muss sich mit dem Gedanken befassen, dass er nicht irgendwelchen Code bearbeitet, sondern ins laufende System eingreift.

Würde auch mal gerne was in Squeak machen, aber mir fehlt da so der richtige Einstieg. Ich will mich ja nicht mit E-Toys oder diesem Krims befassen...
 

AlArenal

Top Contributor
Leroy42 hat gesagt.:
AlArenal hat gesagt.:
Würde auch mal gerne was in Squeak machen, aber mir fehlt da so der richtige Einstieg.

Ach komm! Das versprichst du doch schon seit einem halben Jahr! :cool:

In der Tat. Ich schaue auch immer mal wieder rein, sauge mir aktuelle Versionen und lese hier und da. Was mir einfach fehlt ist ne Möglichkeit ein sauberes UI zu erzeugen. Was ich da so an Wisgets finde sieht eher aus, wie gerade beim Malen mit Fingerfarben entstanden... Literatur zum gemütlich auf der Couch durchlesen finde ich auch nicht. :(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
K Suche alle Objekte einer bestimmten Klasse Allgemeine Java-Themen 2
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
D LinkedList anhand einer long-Variable der Objekte sortieren Allgemeine Java-Themen 5
H In Testklasse Objekte erzeugen und in einer Schleife ausgebe Allgemeine Java-Themen 4
G Objekte in einer Schleife erzeugen? Allgemeine Java-Themen 10
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
J Objekte binär speichern Allgemeine Java-Themen 10
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2
S XML in Objekte wandeln. Euer Rat? Allgemeine Java-Themen 12
G Objekte serialisieren Allgemeine Java-Themen 2
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
S Objekte mit Arrays Allgemeine Java-Themen 9
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
S erzeugte objekte zählen Allgemeine Java-Themen 3
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
Landei Objekte ohne Konstruktoraufruf erzeugen Allgemeine Java-Themen 7
E tiefe Kopie nicht serialisierbarer Objekte Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben