Newsgroup: it.comp.java
Titolo: domande teoriche

Ciao a tutti!
Non ho capito bene le seguenti righe di codice generate da Forte per una
JFrame:
addWindowListener(new java.awt.event.WindowAdapter() {
 public void windowClosing(java.awt.event.WindowEvent evt) {
  System.exit(0);
 }
});
ho capito a cosa servono, cioè a fare in modo di terminare l'applicazione
quando si chiude la finestra, quello che non ho capito è la sintassi di
questo codice.
L'argomento di addWindowListener dovrebbe essere un'istanza di una classe
che implementa l'interfaccia WindowListener, giusto?
WindowAdapter è una classe definita dal codice tra le graffe oppure è una
classe già esistente che implementa WindowListener? E in tal caso cos'è il
codice tra le graffe? E' la definizione di una classe che estende
WindowAdapter e quindi implementa WindowListener?
Domanda 2: a cosa servono i modificatori di accesso native, synchronized,
transient e volatile?
Domanda 3: cosa vuol dire serializzazione degli oggetti (me ne ha parlato un
mio amico, e io, per non fare la figura dell'ignorante, ho fatto finta di
sapere di cosa stava parlando!)?

 che implementa l'interfaccia WindowListener, giusto?
esatto, WindowListener e' l'interfaccia da implementare per intercettare gli
eventi generati dalle finestre, gli eventi generati da queste sono piu' di
uno,
la chiusura ( prima e dopo ) , l'apertura etc etc  e per ognuno di questi
c'e un metodo ( handle dell'evento ), per la lista completa degli eventi
generati e relativi handle guarda la documentazione delle API.
Ora dato che se implementi una interfaccia devi anche dare una
definizione a tutti i metodi dichiarati da questa, nel caso sopra, per
intercettare la chiusura oltre a definire windowClosing( WindowEvent evt )
nel cui corpo scrivi il codice per la gestione dell'evento bisognerebbe
anche definire tutti gli altri metodi lasciandone quindi vuoto il corpo.
Questo e' quello che fa' WindowAdapter, dare una definizione vuota
di tutti gli handle, in questo modo sovvrascrivi solo il metodo/handle
di cui sei interessato risparmiandoti la fatica :)
Guarda nella documentazione API anche WindowAdapter.
Ora il tuo JFrame e la finestra/window SORGENTE dell'evento mentre
WindowAdapter e' il TARGET che riceve e gestisce l'evento tramite
l'handle,  il sorgente deve sapere a chi spedire l'evento ed a questo
serve il metodo addWindowListener( WindowListener l ) che prende
come argomento un oggetto che implementi WindowListener , il
target appunto.
Quindi quello che fa
                                     new java.awt.event.WindowAdapter() {
 public void windowClosing(java.awt.event.WindowEvent evt) {
  System.exit(0);
  }
 });
e' di instanziare una classe anonima interna, che e' un tipo
speciale di classe interna,   creando quindi  un oggetto
dalla classe WindowAdapter accettato come argomento di
addWindowListener( WindowListener l  ),
l'instanza dell'oggetto e' :
new java.awt.event.WindowAdapter()
il corpo della classe interna e'
                                                     inizio corpo
classe-------- >
 public void windowClosing(java.awt.event.WindowEvent evt)
  System.exit(0);
  }
 }<---------------fine corpo classe
per il resto rilancio la palla
Ciao
P.S. mi dimenticavo, gli adapter esistono anche per altri listener,
      per esempio MouseAdapter etc etc


fatto finta di sapere di cosa stava parlando!)?
LOL "Serializzare" significa in soldoni salvare lo stato di un oggetto
su qualche dispositivo e poterlo successivamente ricostruire.
"Serializzare" perche' in effetti quello che puoi fare e' salvare
lo stato su un dispostivo stream-like, cioe' "seriale" (in cui
i dati sono acceduti uno alla volta, in sequenza) e ricostruire
l'oggetto appunto leggendo in sequenza questi dati.
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun



grazie per le risposte!