Miksi javassa ei voi määrätä olioita vain lukukelpoisiksi esim const määreellä? C :ssa tykkään kovasti koodata "const correctness"-periaatteella mutta javassa kaikkia olioita pääsee räpläämään melko suoraan metodien kautta. Monesti olisi tarvetta palauttaa esim. ihan vain readonly vector-luokan olio....
Const/readonly
tahtoo sen
3142
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
voi käyttää, public, private, protected -määreitä. sekä final -määrettä.
final String apua = new String("apuva"); // ei voi muuttaa
final ei tee oliosta "read-onlya", se vain estää viittauksen muuttamisen myöhemmin.
Esim.
final Vector v = new Vector();
ei estä vektorin v sisällön muuttamista, jota alkuperäinen kirjoittaja kai halusi (en tosin ole varma, estääkö "const"-määre C:ssäkään sitä).
Java-1.5:ssa on mukana java.util.Collections-luokka, jossa on metodeita read-only-collectioneiden luomiseen. Esim. muuttumattoman listan saa aikaan näin.
List list = new ArrayList();
... // täytä lista millä haluat
List readonly = Collections.unmodifiableList(list);
nyt readonly-listaa ei voi muuttaa millään List-rajapinnan metodilla.
ainahan luokan voi paketoida
class constVector{
Vector vector
constVector(Vector vec)
{
vector = vec;
}
Object elementAt(int index)
{
return vector.elementAt(i);
}
}
javassahan const on varattu sana lienee tulevaisuuden käyttöön, tiedä sitten mitä sillä on tarkoitus tehdä.