Nella programmazione orientata agli oggetti una classe anonima è un costrutto di un linguaggio di programmazione che permette di dichiarare e contemporaneamente istanziare una classe[1]; è simile alla classe locale, tuttavia a differenza di quest'ultima non presenta un nome[1]. Generalmente viene utilizzata quando c'è la necessità di creare una classe locale soltanto una volta[1]. Le classi anonime forniscono la possibilità di sovrapporre i metodi di una superclasse, o di implementare i metodi di un'interfaccia, senza dover costruire una classe vera e propria. Le classi anonime hanno incluse nella loro definizione la costruzione e il primo uso della classe e si definiscono a partire da una classe o da una interfaccia preesistente.

Caratteristiche modifica

Le classi anonime sono un particolare tipo di classe interna di java che possono essere definite nel corpo di un metodo. A differenza delle classi locali, le classi anonime sono delle espressioni che possono essere incluse come parte di un'espressione più ampia senza la necessità di dichiararle con un nome e la loro visibilità è limitata alla classe o al metodo nel quale sono state definite.

Considerando che una classe anonima per definizione non ha un nome, risulta formalmente impossibile definirne un costruttore; nel caso in cui la classe ne richiedesse uno, è necessario utilizzare una classe locale.

Le classi anonime non possono fare uso di membri statici (come proprietà, metodi o ulteriori classi interne) e non possono nemmeno definire interfacce interne, considerate anch'esse statiche. Le classi anonime possono usare variabili esterne alla loro visibilità solo se queste vengono dichiarate di tipo final.

Esempio di classe anonima modifica

public class Calcolatrice {
	
	public int somma(int a, int b) {
		return 0;
	}

}

public class Main {

	public static void main(String[] args) {
		
		int a = 10;
		int b = 2;
		
                // Creo un oggetto "normale"
		Calcolatrice c1 = new Calcolatrice();
		int risultato1 = c1.somma(a, b);

		// Ora creo una classe anonima che
		// ridefinisce il metodo "somma"
		Calcolatrice c2 = new Calcolatrice(){
			
			public int somma(int a, int b) {
				return a+b;
			};
		};
		
		int risultato2 = c2.somma(a, b);
		
		System.out.println(risultato1); // <- STAMPA 0
		System.out.println(risultato2); // <- STAMPA 12
	}

}

Note modifica

  1. ^ a b c (EN) The Java Tutorial - Anonymous Classes, su docs.oracle.com, Oracle.

Voci correlate modifica

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica