"Ciao, Amico!"
"Come già sai, le classi interne anonime non possono avere un costruttore."
"Sì. Non è molto conveniente. I costruttori sono molto importanti."
"Come dice il proverbio, niente è impossibile se lo vuoi abbastanza."
"Ricorda, le variabili statiche non hanno costruttori statici, ma esiste un inizializzatore statico: il blocco statico."
"Sì, mi ricordo."
"Le classi interne anonime hanno esattamente lo stesso inizializzatore, tranne che non è statico."
class Car {
public ArrayListcreatePoliceCars(int count) { ArrayList result = new ArrayList(); for(int i = 0; i < count; i++) { final int number = i; result.add(new Car() { int policeNumber; { policeNumber = number; } }); } return result; }
}
"Questa volta ho evidenziato il codice anonimo della classe interna in rosso e il suo inizializzatore (in effetti, il suo costruttore) in viola. Il 'costruttore' ha un corpo, ma non c'è la firma del metodo:"
Aspettativa | La realtà |
---|---|
|
|
"Puoi dichiarare variabili all'interno di una tale classe e inizializzarle nell'inizializzatore."
"Eccellente, ora ci sono molte meno restrizioni."
"Con questo, stiamo imparando a conoscere le classi interne. Spero ti sia piaciuto."
"Molto. Le lezioni da Kim, Rishi, e soprattutto da te, Ellie, sono state semplicemente di prim'ordine."
"Che chiacchierone! Continua..."
GO TO FULL VERSION