Dupliqué possible: strong>
Utilisation des définitions de classe dans une méthode de Java < / p> blockQuote>pouvons-nous avoir une classe intérieure à l'intérieur d'une méthode? p>
Tous les échantillons de code seront utiles. P>
4 Réponses :
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();
}
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).
Oui, cela s'appelle Classe intérieure locale forte> - Vous trouverez des exemples en utilisant ce terme dans une recherche sur le Web. P>
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.
}
}
}
}
}
Vous pouvez réellement essayer ceci vous-même que vous savez ... et aussi: Stackoverflow.com/Questtions/2428186/...