|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 47
|
[JAVA] Chiarimenti su una dichiarazione static{}
Ciao a tutti,
oggi a lavoro mi è capitato di dover riusare una classe creata da un mio collega svedese che non riesco a contattare per avere spiegazioni. Riporto in breve il corpo della classe di cui mi interessa avere dei chiarimenti: Codice:
public class NomeClasse{....... static{}codice che fa svariate cose} ........ 1) questa dichiarazione è un metodo? 2)quando viene invocata? Spero di essere stato abbastanza chiaro, grazie in anticipo per l'aiuto! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
E' un metodo speciale che viene invocato al caricamento della classe,
in genere inizializza le variabili statiche.
__________________
|Java Base| |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 47
|
Grazie mille per la risposta velocissima
![]() In effetti c'ero arrivato anche io, però mi serviva una conferma ed ero sicuro di trovarla su questo forum!!! Di nuovo grazie! Buona giornata |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Si chiamano "initialization blocks", possono appartenere alla classe o alla istanza, possono cioè essere eseguiti quando la classe viene caricata o ogni volta che una istanza della classe viene creata.
Codice:
class UnaClasse { static { ..... } // init block di classe { ...... } // init block di istanza }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
Quote:
Complimenti x la tua conoscenza del java. mi potresti indicare un esempio di utilizzo degli init block di istanza?
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque, visto che gli init block di istanza, come ho già detto, vengono eseguiti prima del costruttore, possono essere usati ad esempio per fare delle inizializzazioni particolari, magari comuni a tutti gli eventuali costruttori.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
Quote:
Quote:
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
||
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
public class Prova { public static void main (String[] args) { new Sub (); } } class Super { public Super () { System.out.println ("Costruttore Super"); } } class Sub extends Super { { System.out.println ("Init block Sub"); } public Sub () { System.out.println ("Costruttore Sub"); } } Costruttore Super Init block Sub Costruttore Sub
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
Quote:
però detto questo non capisco cosa offre in più questa possibilità, rispetto a: Codice:
class Sub extends Super { { } public Sub () { System.out.println ("Init block Sub"); System.out.println ("Costruttore Sub"); } }
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
Quote:
avevo capito male cosa intendevi "tutti i costruttori" ![]() pensavo che intendessi costruttore della classe corrente e di altre classi (esempio super-classi o sub-classi) invece intendi "tutti i costruttori" di quella classe. Grazie, ora ho capito.
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:05.