AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Classi interne e membri static

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
Montedidio
Guest





PostPosted: Sat May 19, 2007 12:31 am    Post subject: Classi interne e membri static Reply with quote



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





PostPosted: Sat May 19, 2007 1:28 am    Post subject: Re: Classi interne e membri static Reply with quote



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





PostPosted: Sun May 20, 2007 10:55 pm    Post subject: Re: Classi interne e membri static Reply with quote



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 Smile
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
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.