Otetaan vaikka:
Double d = new Double(2.0);
d ;
Tuon lisäysoperaationjälkeen d ei olekaan enää sama olio kuin ennen! Kysymys kuuluu: MITEN MUUTTAA KÄÄRELUOKAN OLION PRIMITIIVIMUUTTUJAN ARVOA NIIN ETTÄ OLIOTA EI LUODA UUDELLEEN!?!??!!?!?
Double d = new Double(2.0);
d ;
Tuon lisäysoperaationjälkeen d ei olekaan enää sama olio kuin ennen! Kysymys kuuluu: MITEN MUUTTAA KÄÄRELUOKAN OLION PRIMITIIVIMUUTTUJAN ARVOA NIIN ETTÄ OLIOTA EI LUODA UUDELLEEN!?!??!!?!?
Vastaukset 1
Vanhimmat
Nuo kääreluokat eivät ole muokattavissa, ja se juuri on yksi niiden keskeisimmistä ominaisuuksista, (ks. http://mindprod.com/jgloss/immutable.html ). Kääreluokkien käyttö suoraan laskutoimituksissa, (ilman muunnosta), on Javassa vasta uusi ominaisuus, joka helpottaa asioiden tekemistä, (ks. http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html ). Alla on esimerkki siitä, miten asiat piti tehdä ennen ja miten ne voi tehdä nykyään:
--- ESIMERKKI 1 ALKAA ---
Javac 1.4:
Double a = new Double(3);
Double b = new Double(a.doubleValue() 1);
double c = a.doubleValue();
Javac 1.5:
Double a = 3;
Double b = a 1;
double c = a;
--- ESIMERKKI 1 LOPPUU ---
Jos haluat doublen sisältävän kääreen jota voi muokata, silloin se pitää tehdä itse, alla olevan esimerkin tapaan. Laskuoperaatioita luokka ei kuitenkaan voi yli kirjoittaa C :n tapaan.
--- ESIMERKKI 2 ALKAA ---
public final class OmaDouble {
double numero;
public OmaDouble(double numero) {
this.numero = numero;
}
public static void main(String[] args) {
OmaDouble d = new OmaDouble(3);
System.out.println(d.numero );
System.out.println(d.numero);
}
}
--- ESIMERKKI 2 LOPPUU ---