"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