 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Montedidio Guest
|
Posted: Sat May 19, 2007 12:31 am Post subject: Classi interne e membri static |
|
|
Qualcuno sa *perchè* le classi interne non possono avere membri
statici?
Sul Thinking in Java c'è scritto:
"I campi e i metodi nelle classi interne ordinarie possono trovarsi
solo al livello esterno di una classe, per cui le classi interne
ordinarie non possono avere dati static, campi static o classi
annidate"
Ma non riesco a coglierne il significato. Cosa vuol dire poi: "al
livello esterno di una classe"?!!?!?
Sul sito della Sun sono di poche parole e scrivono:
"Also, because an inner class is associated with an instance, it
cannot define any static members itself"
Vuole forse dire che lo scoping di una classe interna è un'istanza? e
anche se fosse, che problema ci sarebbe a creare un dato static?
Premetto che sono un neofita e provo ad esporvi il mio ragionamento:
Supponiamo di poter dichiarare un membro statico in una classe
interna.
Creiamo 5 istanze di una classe esterna.
Per ogni istanza creata creiamo 3 istanze di quella interna.
Le 3 istanze avrebbero in comune un unica porzione di memoria relativa
al dato static.
Quindi avremmo 5 porzioni di memoria static che contengono tutte lo
stesso valore..
Una proliferazione inutile.. tuttavia concettualmente possibile.
Perchè allora bloccare tale meccanismo addirittura nel linguaggio?
Quello che non capisco è se si tratta di un scelta dovuta a qualche
sintassi del linguaggio (che mi sfugge!), alla effettiva
impossibilità di rappresentare tali situazioni nella memoria, o se è
solo una scelta di concetto. (del tipo: una variabile statica è
qualcosa di 'globale' e non ha senso crearla all'interno di una
istanza)
Sempre sul sito Sun infatti trovo scritto:
"It is helpful at this point to abuse the terminology somewhat, and
say,
loosely, that the static keyword always marks a "top-level" construct
(variable, method, or class), which is never subject to an enclosing
instance."
Ma il motivo *preciso* sembra che non sia scritto da nessuna parte..
Scusate se mi sono dilungato troppo!
Grazie a tutti. |
|
| Back to top |
|
 |
gnurant Guest
|
Posted: Sat May 19, 2007 1:28 am Post subject: Re: Classi interne e membri static |
|
|
| Quote: | Sul Thinking in Java c'è scritto:
"I campi e i metodi nelle classi interne ordinarie possono trovarsi
solo al livello esterno di una classe, per cui le classi interne
ordinarie non possono avere dati static, campi static o classi
annidate"
|
Con ogni probabilità era da tradursi o da intendersi "a livello
di istanza (della classe esterna)": il concetto di static prescinde
- infatti - dall'istanza. |
|
| Back to top |
|
 |
Casper Guest
|
Posted: Sun May 20, 2007 10:55 pm Post subject: Re: Classi interne e membri static |
|
|
| Quote: | Qualcuno sa *perchè* le classi interne non possono avere membri
statici?
|
[...]
| Quote: | Le 3 istanze avrebbero in comune un unica porzione di memoria relativa
al dato static.
|
[...]
| Quote: | (del tipo: una variabile statica è
qualcosa di 'globale' e non ha senso crearla all'interno di una
istanza)
|
è proprio questo
La inner class esiste quando viene istanziata ed è dipendente dall'istanza
della outer class che la contiene.
Pertanto non può avere membri statici che per definizione sono creati al
"top-level", e non avrebbe senso crearli dentro una *istanza*.
L'unico modo è creare una "static inner class". |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|