Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JAVA] geheugenadres van objecten verkrijgen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een applicatie (geschreven in AspectJ) om Java software te tracen.
De gegenereerde trace files visualiseer ik vervolgens middels UML sequence diagrams.

Indien mogelijk wil ik als ID voor de objecten in de gegenereerde diagrammen hun geheugenadres gebruiken. Is het mogelijk om deze op een of andere manier te verkrijgen?

Momenteel kan ik deze alleen opvragen van objecten waarin de toString() methode niet is geherdefinieerd.

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Je zou eventueel System.identityHashCode(Object o) als uniek ID kunnen gebruiken.

[ Voor 6% gewijzigd door Confusion op 04-02-2008 21:20 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • MNeMoNiCS
  • Registratie: Mei 2002
  • Laatst online: 16-10-2012
Heb je de source van Object.toString() niet bekeken?

code:
1
2
3
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:59

Janoz

Moderator Devschuur®

!litemod

@MNeMoNiCs: Dan zit je weer met de classes die een eigen hashCode() implementatie hebben, en hashCode is als native geimplementeerd, dus dit is niet zomaar over te nemen in je eigen class.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op maandag 04 februari 2008 @ 21:29:
@MNeMoNiCs: Dan zit je weer met de classes die een eigen hashCode() implementatie hebben, en hashCode is als native geimplementeerd, dus dit is niet zomaar over te nemen in je eigen class.
Dat probleem heb ik verholpen door de suggesties van Confusion en MNeMoNiCS te combineren:

code:
1
2
3
4
5
6
7
public String getID(Object o)
{
    String hash = Integer.toHexString(System.identityHashCode(o));
    String id = o.getClass().getName() + "@" + hash;
        
    return id;
}


Thanks guys!