Ho appena scoperto classi locali in Java:Quando si dovrebbe usare una classe locale in Java?
public final class LocalClassTest
{
public static void main(final String[] args) {
for(int i = 10; i > 0; i--) {
// Local class definition--declaring a new class local to the for-loop
class DecrementingCounter {
private int m_countFrom;
public DecrementingCounter(final int p_countFrom) {
m_countFrom = p_countFrom;
}
public void count() {
for (int c = m_countFrom; c > 0; c--) {
System.out.print(c + " ");
}
System.out.println();
}
}
// Use the local class
DecrementingCounter dc = new DecrementingCounter(i);
dc.count();
}
}
}
ho incontrato questo commento: Advantages of Local Classes che ha elencato alcuni grandi vantaggi delle classi locali oltre classi interne anonime.
La mia domanda è, non sembra che ci sarebbero molti casi in cui questa tecnica avrebbe vantaggi rispetto alle classi interne NON anonimi. Quello che voglio dire è: usereste una classe locale se la vostra classe è utile solo nell'ambito di un metodo. Ma quando i tuoi metodi arrivano al punto di essere così complessi, devi iniziare a definire classi personalizzate all'interno di essi, probabilmente sono già troppo complessi e devono essere suddivisi. A quel punto, la tua classe locale dovrebbe diventare una classe interiore, giusto?
Quali sono alcuni esempi di quando le classi locali sono più desiderabili delle classi interne, che non includono metodi super-complessi (che dovrebbero essere evitati)?
AAHHHHH ... mi fanno male gli occhi. :) – limc
classe locale dichiarata nel ciclo ???? sei pazzo? Non è necessario farlo poiché la classe non accede a nessuno dei loop variabili locali. Questa classe può anche essere esterna facilmente –
@eugener: Beh, suppongo che dovrebbe essere dichiarata al di fuori del ciclo, ma è un esempio forzato che sembra ugualmente assurdo in entrambi i modi ... –