banansplitt™ Skrevet 14. november 2014 Del Skrevet 14. november 2014 La oss si vi har en klasse Class med field int ID. Hvordan kan jeg lage et objekt som automatisk øker den IDen hver gang jeg lager en instance av objektet? Feks at første instance får ID 0, neste instance får ID 1 uten at jeg må spesifisere hver enkelt ID når jeg oppretter instances i klientprogrammet. Lenke til kommentar
coffeeh Skrevet 14. november 2014 Del Skrevet 14. november 2014 Tjaa.. Kan bruke en static variabel for å holde styr på maks id så langt: class MyClass{ private static int total_max_id = -1; int id; ... MyClass() { this.id = total_max_id++; } ... } Evt hvis instansene skal lagres i en datastruktur med size(), som f.eks ArrayList: class MyClass{ int id; ... MyClass(ArrayList<MyClass> my_storage) { this.id = my_storage.size(); my_storage.add(this); } ... } Lenke til kommentar
GeirGrusom Skrevet 14. november 2014 Del Skrevet 14. november 2014 Må vel også muligens gjøre det thread-safe? Lenke til kommentar
jonny Skrevet 14. november 2014 Del Skrevet 14. november 2014 Må vel også muligens gjøre det thread-safe? Noe sånt, kanskje? class MyClass { private static int objCount = 0; private static synchronized int getNextID() { return objCount++; } int id; ... MyClass() { this.id = getNextID(); } ... } Lenke til kommentar
siDDis Skrevet 4. desember 2014 Del Skrevet 4. desember 2014 Nei, bruk AtomicInteger 1 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå