justincaseof
Grünschnabel
Hi!
ich habe eine HashMap<Object, String>.
folgendes Problem tritt nun auf:
Dass der Eintrag überschrieben wird, ist mir klar.
Es existiert deshalb die Klasse IdentityHashMap<K,V>.
ABER: Das Boxing der int-Variablen in Integer-Objekten erzeugt zwei gleiche Objekte...(gleicher hash)...damit funktionierts also auch nicht.
------------------------------------------------------------------------------------------------------------
was ich letztlich damit erreichen will soll grundlegend so aussehen/funktionieren:
(das Konstrukt sieht wild aus; ich muss es aber wirklich derartig machen...einfach gesagt, will ich per Bytecode-Engineering zu jeder primitiven Variable einer Klasse zentral eine Information halten/abrufen)
Eine Möglichkeit wäre die physische Adresse des ints als Key zu speichern....aber das ist ja nicht Sinn und Zweck von Java.
Ich danke schon jetzt für jegliche Lösungsvorschläge
mfg, der Tobi
ich habe eine HashMap<Object, String>.
folgendes Problem tritt nun auf:
Code:
int a=9;
int b=9;
Integer ia = a;
Integer ib = b; // ib==ia => true
map.put(ia, "lala1");
map.put(ib, "lala2"); // überschreibt den eintrag von ia
Es existiert deshalb die Klasse IdentityHashMap<K,V>.
ABER: Das Boxing der int-Variablen in Integer-Objekten erzeugt zwei gleiche Objekte...(gleicher hash)...damit funktionierts also auch nicht.
------------------------------------------------------------------------------------------------------------
was ich letztlich damit erreichen will soll grundlegend so aussehen/funktionieren:
(das Konstrukt sieht wild aus; ich muss es aber wirklich derartig machen...einfach gesagt, will ich per Bytecode-Engineering zu jeder primitiven Variable einer Klasse zentral eine Information halten/abrufen)
Code:
Aufruf:
method()
{
int a=123;
int b=123; // gleiche Werte können vorkommen
MyHashMap.getInstance().put(a, "variable a");
MyHashMap.getInstance().put(b, "variable b");
MyObject myObject = new MyObject();
myObject.set_int_a(a);
}
Code:
class MyObject
{
private int a;
public void set_int_a(int arg)
{
this.a = arg;
}
method_doit()
{
String result = MyHashMap.getInstance().get(a); //hier hätte ich gern "variable a" als ergebnis
}
}
Eine Möglichkeit wäre die physische Adresse des ints als Key zu speichern....aber das ist ja nicht Sinn und Zweck von Java.
Ich danke schon jetzt für jegliche Lösungsvorschläge
mfg, der Tobi