Le classi anonime

Le classi anonime o anonymus class sono un particolare tipo di classi java che possono essere definite all'interno del corpo di un metodo, e sono appunto senza nome. A differenza delle classi locali, le classi anonime sono delle espressioni, e quindi possono essere incluse come parte di un'espressione più ampia. La loro visibiltà è limitata alla classe o al metodo in cui sono state definite. Per capire meglio la loro utilità vediamo qualche classico esempio dove risulta quasi spontaneo ricorrere al loro uso. Un tipico caso è quello di implementare velocemente un listener in Java Swing:
public void metodo() {
  ActionListener listener = new ActionListener(){
    public void actionPerformed(ActionEvent evt) {
      ...
    }
  };
  JButton button = new JButton("Button");
  button.addActionListener(listener);
}
Oppure un Adapter:
KeyAdapter adapter = new KeyAdapter(){
  public void keyReleased(KeyEvent evt){
    ...
  }
};
In poche parole quando una classe locale è utilizzata una sola volta, è consigliabile utilizzare la sintassi della classe anonima. Se la classe anonima utilizza degli oggetti che sono stati definiti all'interno del metodo, devono essere dichiarati final (in sola lettura) per evitare che l'oggetto possa cambiare una volta che viene dichiarata la classe:
public void metodo() {
  final String message = "Ciao";
  Runnable run = new Runnable() {
    public void run() {
      while(true) {
        try {
          System.out.println(message);
          Thread.sleep(1000);
        }
        catch(Exception e) {}
      }
    }
  };
  Thread t = new Thread(run);
  t.start();
}
Una delle caratteritiche più eleganti di questo tipo di classe è che consentono di definire una classe esattamente dove è necessario. Inoltre, le classi anonime hanno una sintassi molto sintetica che riduce la confusione nel codice. Dato che una classe anonima non ha un nome, non è possibile definire un costruttore per essa. Se la classe richiede un costruttore, è necessario invece utilizzare una classe locale.
Altri link che potrebbero interessarti
  • » Utilizzare un JButton in Java Swing
  • » Utilizzare HTML in componenti Java Swing
  • » Numeri casuali in java
  • » Modalità Full Screen Exclusive in java
  • » Leggere un file di testo in java
  • » Le variabili atomiche in java
  • » Java Regex
  • » Java Database MySql
  • » Java Cursor Mouse
  • » Import Static Java
  • » Implementare un Singleton
  • » Implementare un KeyListener in java Swing
  • » Implementare il System.out su una JTextArea
  • » Il costrutto if in java
  • » Il costrutto foreach in java
  • » Il blocco static
  • » Creare una ToolBar in Java Swing
  • » Chiudere le applicazioni Java Swing
  • » Bordo con titolo in Java Swing
  • » Background Image per componenti Java Swing