Lezione anonymousinnerclass

661 views
628 views

Published on

come si spiega la sintassi di una classe anonima

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
661
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lezione anonymousinnerclass

  1. 1. Lezione Anonymous Inner Class Silvano Natalizi Apr 19, 2010
  2. 2. Obiettivo della lezione <ul><li>L’obiettivo di questa lezione è quello di insegnare come si scrive una classe interna anonima. </li></ul><ul><li>Anonymous inner class </li></ul>
  3. 3. Classe interna
  4. 4. Bottone, listener, classe interna <ul><li>Quando si preme il bottone b1, il suo evento viene ascoltato dall’oggetto listener che gli è stato associato tramite l’istruzione : </li></ul><ul><ul><li>b1.addActionListener(new InviaMessaggio()); </li></ul></ul><ul><li>La classe InviaMessaggio è una classe interna che implementa ActionListener e definisce il metodo actionPerformed(). </li></ul>
  5. 5. Istruzione alternative <ul><li>Avremmo potuto codificare anche al seguente modo: </li></ul><ul><li>ActionListener a1=new InviaMessaggio; </li></ul><ul><li>b1.addActionListener(a1); </li></ul>
  6. 6. Sintassi alternativa- prima fase <ul><li>Trasformiamo la sintassi per gradi fino ad arrivare alla sintassi della classe anonima. </li></ul><ul><li>1) ActionListener a1=new ActionListener(); </li></ul><ul><ul><li>Non si può fare perché non si può instanziare una classe interfaccia </li></ul></ul><ul><li>2) ActionListener a1=new X(); </li></ul><ul><ul><li>Class X implements ActionListener{ </li></ul></ul><ul><ul><li>public void actionPerformed(ActionEvent e){ </li></ul></ul><ul><ul><li>// execute when è rilevato un ActionEvent </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>} </li></ul></ul>
  7. 7. Sintassi alternativa – seconda fase <ul><li>Ora supponiamo che si possa inserire la intera dichiarazione della classe X nella istruzione che instanzia un oggetto ActionListener: </li></ul><ul><li>ActionListener a1=new ActionListener() class X implements ActionListener{…}; </li></ul><ul><li>Normalmente non vediamo il punto e virgola dopo una parentesi graffa, ma in questo caso il punto e virgola serve per terminare la singola istruzione che inizia con “ActionListener a1 =…” ; </li></ul>
  8. 8. Sintassi alternativa – terza fase <ul><li>Ora assumiamo che la classe X sia senza nome, ma abbia solo il corpo: </li></ul><ul><li>ActionListener a1=new ActionListener(){…}; </li></ul><ul><li>Ecco questa è in essenza la sintassi di una classe anonima . Anonima perché senza nome. </li></ul>
  9. 9. Classe anonima per l’interfaccia listener <ul><li>Nel caso di ActionListener, dobbiamo implementare il metodo actionPerformed, racchiudendo il suo codice all’interno del body della classe anonima, come segue: </li></ul><ul><li>ActionListener a1=new ActionListener(){ </li></ul><ul><ul><li>public void actionPerformed(ActionEvent e){ </li></ul></ul><ul><ul><li>// execute quando un ActionEvent è rilevato </li></ul></ul><ul><ul><li> } </li></ul></ul><ul><ul><li>}; </li></ul></ul>
  10. 10. Classe anonima per l’interfaccia View.OnclickListener
  11. 11. The End

×