Я только что открыл локальные классы в 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();
}
}
}
Я встретил этот комментарий: Преимущества локальных классов, в котором перечислены некоторые большие преимущества локальных классов над анонимными внутренними классами.
Мой вопрос заключается в том, что не похоже, что было бы много случаев, когда этот метод имел бы преимущества перед NON-анонимными внутренними классами. Я имею в виду: вы бы использовали локальный класс, если ваш класс полезен только в области метода. Но когда ваши методы доходят до такой степени, что они настолько сложны, вам нужно начать определять пользовательские классы внутри них, они, вероятно, уже слишком сложны и их нужно разделить. В какой момент ваш локальный класс должен стать внутренним классом, не так ли?
Каковы некоторые примеры того, когда локальные классы более желательны, чем внутренние классы, которые не связаны с суперкомплексными методами (чего следует избегать)?