Hallo!
Ich habe eine Frage: ich möchte eine Referenz in Java implementieren, und zwar auf den primitiven Datentyp int, weil mir in diesem Fall der RAM sehr wichtig ist und ich gerne auf Integer verzichten würde.
Gibts da eine Möglichkeit?
Hallo!
Ich habe eine Frage: ich möchte eine Referenz in Java implementieren, und zwar auf den primitiven Datentyp int, weil mir in diesem Fall der RAM sehr wichtig ist und ich gerne auf Integer verzichten würde.
Gibts da eine Möglichkeit?
hallo
einfache antwort: NEIN
mit java 5 gibt es zwar einen mechanismus, der für anfänger so aussieht, als ob es gehen würde, de fakto macht da aber der compiler intern eine explizite konvertierung auf Integer draus - wenn man es nicht weiss und/oder übersieht, kann es damit erhebliche performanceprobleme geben.
sowas wie die referencen in c sucht man in java leider vergebens. das einzige was halbwegs funktioniert ist der umweg über ein „proxy-objekt“: man definiert sich eine neue klasse die ein feld mit dem primitiven datentyp beinhaltet und stellt sicher, dass man sich die referenz auf eine instanz dieser klasse merkt (also ein klassisches sigleton). dann kann man immer diese instanz verwenden wenn man referenzieren will. ist zwar nicht gerade schön, performancemässig aber sicher schneller als die ständige instanzierung von Integer-objekten. sollte aber jemals ein anderer programmierer deine arbeit weiterführen müsse, wird er dich sicher dafür verfluchen.
lg
erwin
hallo
einfache antwort: NEIN
danke, das hab ich mir schon gedacht.
also entweder Integer verwenden oder meine eigene, sparsamere Variante
MyInteger benutzen.
vielen dank jedenfalls für die antwort!
Hallo!
Warum willst du eine Referenz auf einen int haben? Damit sparst du ja nichts. Wenn du eine Referenz hast, braucht diese ja ebenfalls wieder Speicherplatz. Sonst die Klasse Integer wäre eine solche Alternative. Allerdings bezweifle ich, dass du da irgendetwas sparen wirst.
Btw.:MyInteger wird nicht viel sparsamer sein als Integer.
hi
die argumentationsweise ist etwas falsch: in manchen fällen möchte man eine referenz, weil man einen bestimmten zweck verfolgt (z.b. soll eine funktion einen wert meiner int-variable verändern können). und das ganze soll nun möglichst ressourcenschonend erfolgen.
verwendet man Integer, hat man das problem, dass diese objekte immuteable sind, d.h. pro int-wert brauche ich einen neuen Integer. gerade die objekt-instanzierungen kosten aber enorm viel ressourcen im java.
effizienter ist es nun, immer nur die selbe instanz zu verwenden. damit fällt die objekt-instanzierung weg. die ersparnis beim garbage-collector ist eher vernachlässigbar - ausser man macht wirklich extrem viel gebraucht von Integern.
lg
erwin