|
|||||||
|
|
|
![]() |
|
|
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{
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: 07:40.











|








