Зачем нужны статические внутренние классы? (original) (raw)

Они имеют смысл в основном как средство тестирования/отладки.

Ну например: в классе может быть только 1 метод main() - точка входа/запуска. А если в вашем классе сделать несколько внутренних статических класса каждый со своим main():

public class My {
    public static class Test1 {
       public static void main(String[] args) {}
    }
    public static class Test2 {
       public static void main(String[] args) {}
    }
}

То у вас получится 2 точки входа:

java My$Test1
java My$Test2

оч. удобно. Ну и плюс сохраняется возможность доступа из внутреннего класса к приватным членам внешнего класса.