Uso de definições de classe dentro de um método em Java

Exemplo:

public class TestClass {

    public static void main(String[] args) {
        TestClass t = new TestClass();
    }

    private static void testMethod() {
        abstract class TestMethod {
            int a;
            int b;
            int c;

            abstract void implementMe();
        }

        class DummyClass extends TestMethod {
            void implementMe() {}
        }

        DummyClass dummy = new DummyClass();
    }
}

Eu descobri que o trecho de código acima é perfeitamente legal em Java. Tenho as seguintes perguntas.

Qual é a utilidade de ter uma definição de classe dentro de um método?Um arquivo de classe será gerado paraDummyClassÉ difícil para mim imaginar esse conceito de uma maneira orientada a objetos. Ter uma definição de classe dentro de um comportamento. Provavelmente alguém pode me dizer com exemplos equivalentes do mundo real.Classes abstratas dentro de um método me parecem um pouco loucas. Mas nenhuma interface é permitida. Existe alguma razão por trás disso?

questionAnswers(6)

yourAnswerToTheQuestion