webForumDet fria alternativet

Static Inner Class?

Java

4 svar · 307 visningar · startad av Compusa

Medlem sedan jan. 20023 327 inlägg
Frågan#1

Hej :)

Håller på att implementera en wrapper klass för en dubbel-länkad lista. Klassen som heter CList innehåller en rad olika metoder för att lägga till, editera och ta bort noder med mera.

Nu ska jag implementera en Iterator och har kommit fram till att jag ska använda en inner class (nestlad) i den befintliga för detta.

Det jag undrar över, är om jag ska sätta inner classen som static eller inte? Det jag har kommit fram till är att den inte ska vara static i och med att att det kan finnas flera instanser av CList och varje inner class bör vara knuten till en specifik instans.

Är jag helt ute och cyklar?

Medlem sedan juni 20008 205 inlägg
#2

Nej, du har tvärtom helt rätt. Båda varianterna kan funka, men den bör inte vara static. Eftersom en iterator opererar på (eller egentligen är en aspekt av) en specifik instans av listklassen skulle det bara leda till onödigt dubbelarbete. Är den icke-static kan den direkt komma åt alla noder och liknande delar som den behöver.

Medlem sedan jan. 20023 327 inlägg
#3

Tack spango, ytterligare en fråga, är det inte möjligt att att skapa en helt fristående klass av Iteratorn? Dvs lyfta ur den ur listklassen eller är det en dum lösning?

Medlem sedan sep. 2001961 inlägg
#4

Eftersom Iteratorn för CList är beroende av CList och jag antar att man får den från CList.iterator() så finns det ingen anledning alls att ha den som separat klass. Man skall ju inte kunna instansiera en CListItertor från någon annanstans än CList... eller??

Medlem sedan jan. 20023 327 inlägg
#5

Du har så rätt Lime, har kommit fram till att både CListIterator och DNode ska vara inner classes i CList

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)