mam tridu (smyslena, oholena jen na reprezentaci problemu):

public class Neco implements INekohoJineho {
 public String dejHodnotu(Object element){
        String hodnota = Tool.casoveNarocnaMetoda(element);
        return hodnota;
 }
}

metoda dejHodnotu je volana v cyklu frameworku nade mnou a jsou i pripady, 
kdy je nekolikrat po sobe volana se stejnou instanci element. Hodne by se 
program zrychlil, kdybych si uchovaval posledni instanci element se kterou 
bylo volano a jaka pri ni byla vypoctena "hodnota". Problem je, ze si 
nemuzu dovolit drzet uvnitr tridy Neco referenci na element, protoze to 
nema kdo uklidit a zivotnost tridy Neco je vyrazne vyssi nez element.

Napada me misto uchovat jenom System.identityHashCode(element) misto 
samotne reference na element, ale nemuzu se dopatrat jestli a z ceho 
vychazi System.identityHashCode(). Vzdy jsem myslel, ze v zajmu rychlosti 
jde o nativni implementaci, ktera proste vrati adresu instance na heapu. 
Pak by to bylo bezpecne, ale jistej si nejsem.

jak by to teda pak vypadalo :

public class Neco implements INekohoJineho {
   private int ihc = Integer.MIN_VALUE;
   private String hodnota = null;
  public String dejHodnotu(Object element){
        int foo = System.identityHashCode(element);
        if (foo == ihc) return hodnota;
        ihc = foo;
        hodnota = Tool.casoveNarocnaMetoda(element);
        return hodnota;
 }
}

Odpovedet emailem