L'utilisation de définitions de classe à l'intérieur d'une méthode en Java

Exemple:

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();
    }
}

J'ai trouvé que cette partie de code est parfaitement légal en Java. J'ai les questions suivantes.

  1. Qu'est-ce que l'utilisation de jamais avoir une définition de classe à l'intérieur d'une méthode?
  2. Un fichier de classe seront générés pour DummyClass
  3. Il est difficile pour moi d'imaginer ce concept dans un Objet de façon Orientée. Avoir une définition de classe à l'intérieur d'un comportement. Probablement quelqu'un peut-il me dire l'équivalent des exemples du monde réel.
  4. Les classes abstraites à l'intérieur d'une méthode semble un peu fou de moi. Mais pas d'interfaces de permis. Est-il une raison derrière tout cela?
  • Je suis d'accord, c'est très désordonné. J'ai vérifié le code que mon collègue a écrit et a trouvé ce local de classe dans une méthode... ça m'a fait me sentir comme ce module a été totalement souillé.
  • Parfois, il est plus question de se cacher des trucs que vous avez besoin de nulle part ailleurs, plutôt que sur son apparence 😉
InformationsquelleAutor bragboy | 2010-03-11