|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
[JAVA] costruttore new con finestre
Codice:
import javax.swing.JFrame; public class HelloFrame extends JFrame { private static final long serialVersionUID = 1L; public static void main(String[] args) { new HelloFrame(); } public HelloFrame() { this.setSize(500, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Hello World!"); this.setVisible(true); } } Codice:
new HelloFrame(); che fa questo codice di preciso? |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Dec 2009
Messaggi: 98
|
avviando l'applicazione viene eseguito prima di tutto il codice all'interno di
Codice:
public static void main(String[] args) { new HelloFrame(); } Codice:
public HelloFrame() { this.setSize(500, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Hello World!"); this.setVisible(true); } |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Viene creato un'oggetto temporaneo avente scope coincidente col main.
Quindi viene distrutto (o meglio schedulato per la distruzione) all'uscita dal main.
__________________
Concluso con:... |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Il motivo è la creazione e l'avvio del thread EDT che processa gli eventi grafici. Una virtual machine non schiatta finchè c'è almeno un thread non-demone ancora vivo. Il thread che esegue il metodo main dopo quel "new HelloFrame()" tira le cuoia, ma quella chiamata ha come effetto collaterale la creazione e l'avvio del thread EDT a seguito dell'inserimento di un evento grafico da processare nella event queue di sitema. In particolare la chiamata responsabile, in quel tuo codice, è la chimata al metodo setVisible (vedi i javadoc).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
volevo sapere una cosa del genere, il problema è che quello che dici implica una cosa: l'oggetto viene quindi allocato nello stack?
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Non so se nello stack venga allocata o no una reference per l'oggetto temporaneo.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
e quindi il main non c'entra niente, viene destinato al garbage collector perché non più referenziato ( in realtà mai referenziato da nessuna variabile ), giusto?
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
Il riferimento all'HelloFrame creato rimane nel thread EDT, quindi non viene deallocato dal garbage collector.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:55.