6
votes

Pouvons-nous avoir une classe intérieure dans une méthode?

Dupliqué possible:
Utilisation des définitions de classe dans une méthode de Java < / p>

pouvons-nous avoir une classe intérieure à l'intérieur d'une méthode?

Tous les échantillons de code seront utiles.


1 commentaires

Vous pouvez réellement essayer ceci vous-même que vous savez ... et aussi: Stackoverflow.com/Questtions/2428186/...


4 Réponses :


9
votes

Oui, vous pouvez:

public static void main(String[] args) {
    class Foo implements Runnable {
        @Override public void run() {
            System.out.println("Hello");
        }
    }

    Foo foo = new Foo();
}


3 commentaires

Il y a une bonne utilisation pour les classes intérieures locales, à savoir le cas où vous avez besoin de quelque chose comme une classe anonyme, mais où vous avez besoin de la classe pour avoir un constructeur.


@MathiSschwarz: Vous pouvez utiliser des blocs d'initialisateur pour la plupart de ces cas - que faites-vous dans le constructeur qui l'oblige à être nommée?


Oui c'est une autre façon de le faire. Cependant, les «paramètres» à de tels blocs d'initialisateur devraient alors être déclarés définitifs définis dans la portée extérieure (la méthode).



0
votes

Oui, cela s'appelle Classe intérieure locale - Vous trouverez des exemples en utilisant ce terme dans une recherche sur le Web.


0 commentaires

9
votes

Oui, vous pouvez.

public final class Test {
  // In this method.
  private void test() {
    // With this local variable.
    final List<String> localList = new LinkedList<String>();
    // We can define a class
    class InnerTest {
      // Yes you can!!
      void method () {
        // You can even access local variables but only if they are final.
        for ( String s : localList ) {
          // Like this.
        }
      }
    }
  }

}


0 commentaires

0
votes

Oui, il s'appelle une classe locale: Spécification de la langue Java


0 commentaires