# Referenz als String ausgeben.



## javasdann (23. Feb 2005)

Hallo,

ich möchte für eine Sperrverwaltung die Referenzwert eines Objekts ermitteln.
Das bedeutet ich möchte eigentlich einfach nur die Referenz der Instanz als String, Long, Hex oder was auch immer mit System.out.println ausgeben - also die Speicheradresse!

Ich habe mir schon hier und im restlichen Internet den Wolf gesucht :-(
Wäre super, wenn einer ne Idee hätte.

Danke im voraus & Gruß,
  Roger


----------



## Illuvatar (23. Feb 2005)

Hm ich glaube net dass das geht ???:L


----------



## meez (23. Feb 2005)

toString(), sofern nicht überschrieben.
Wenn du einen Unique-Bezeichner willst, würd ich hashCode() nehmen.


----------



## Manfred (23. Feb 2005)

Wenn du einfach schreibst

System.out.println(OBJEKTNAME);

bekommt man eine Java-Interne Referenz mit dem Namen und einer Zahl, probiers mal aus!


----------



## Illuvatar (23. Feb 2005)

Dise Zahl ist allerdings auch nur der Hashcode, der nichts mit der Speicheradresse zu tun hat, und die Ausgabe machts übrigens auch nur, ewnn toString nicht überschrieben ist.


----------



## meez (23. Feb 2005)

Manfred hat gesagt.:
			
		

> System.out.println(OBJEKTNAME);



Da wird einfach toString() des Objektes aufgerufen. Die "Referenz" bekommst du aber nur, sofern die Klasse die Methode nicht selber implementiert , bzw. überschrieben hat.


----------



## Ratlos (23. Feb 2005)

Ich habe gedacht, er möchte die richtige Speicheradresse vom Hauptspeicher haben?
Hatte das nicht in C++ etwas mit Pointern zu tun?


----------



## meez (23. Feb 2005)

Ratlos hat gesagt.:
			
		

> Ich habe gedacht, er möchte die richtige Speicheradresse vom Hauptspeicher haben?
> Hatte das nicht in C++ etwas mit Pointern zu tun?



Das geht nicht, da dies ja gerade einer der Haupteigenschaften von Java ist (Abstrahierung gegenüber der Plattform und Hardware)...


----------



## javasdann (23. Feb 2005)

WOW - das geht ja rasend schnell hier 

Also einfach System.out.println(obj) geht nicht. Es ist die gleiche Ausgabe wie mit dem Zusatz toString()

hashCode liefert mit bei 2 Programmstarts das gleiche Ergebnis. Und das bringt mir auch nix.

Ich möchte einen eindeutigen Wert für einen Programmstart ermitteln ohne Hilfsdateien und DB Einträge mit Zählern.
Hierzu wollte ich die Referenznummer und einen Zeitstempel konkatenieren um eine eindeutige Programm ID zu erstellen.

Gruß,
  roger


----------



## mic_checker (23. Feb 2005)

javasdann hat gesagt.:
			
		

> Also einfach System.out.println(obj) geht nicht. Es ist die gleiche Ausgabe wie mit dem Zusatz toString()



Das ist klar, wenn du die Methode toString() nicht überschrieben hast, da - wie schon mehrfach erwähnt - dann die Methode toString() von Object aufgerufen wird.


----------



## Bleiglanz (24. Feb 2005)

ja eben, und wenn toString() überschrieben wurde, dann liefert der Aufruf einfach irgendwas, also kann die Idee so nicht funktionieren


> Das bedeutet ich möchte eigentlich einfach nur die Referenz der Instanz als String, Long, Hex oder was auch immer mit System.out.println ausgeben - also die Speicheradresse!


das geht nicht, da kommst du nicht ran; warum willst du das ausgeben? Du kannst ja einfach "die Referenz" per

Object o = instanzvonirgendwas;

abspeichern etc, in o ist dann der eindeutige zeiger auf dein Objekt (leider kannst du seinen "Wert" nicht ausdrucken etc)




BeitragVerfasst am: 23. 02. 2005, 16:34    Titel: 	  Zitieren
Druckversion downloaden (dieser Post)
WOW - das geht ja rasend schnell hier icon_smile.gif

Also einfach System.out.println(obj) geht nicht. Es ist die gleiche Ausgabe wie mit dem Zusatz toString()

hashCode liefert mit bei 2 Programmstarts das gleiche Ergebnis. Und das bringt mir auch nix.


> Ich möchte einen eindeutigen Wert für einen Programmstart ermitteln ohne Hilfsdateien und DB Einträge mit Zählern.
> Hierzu wollte ich die Referenznummer und einen Zeitstempel konkatenieren um eine eindeutige Programm ID zu erstellen.


google nach GUID und Java


----------

