Je traversais tutoriel de classe anonyme de documentation Oracle (https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html)Les déclarations contenues dans la déclaration de classe anonyme
J'ai copié le code utilisé dans le tutoriel (Commentaires Statement1 et Statement2 sont joints en annexe par moi):.
public class HelloWorldAnonymousClasses {
interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}
public void sayHello() {
class EnglishGreeting implements HelloWorld {
String name = "world";
public void greet() {
greetSomeone("world");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
}
HelloWorld englishGreeting = new EnglishGreeting();
HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde"; //Statement1
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};
HelloWorld spanishGreeting = new HelloWorld() {
String name = "mundo"; //Statement2
public void greet() {
greetSomeone("mundo");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hola, " + name);
}
};
englishGreeting.greet();
frenchGreeting.greetSomeone("Fred");
spanishGreeting.greet();
}
public static void main(String[] args) {
HelloWorldAnonymousClasses myApp =
new HelloWorldAnonymousClasses();
myApp.sayHello();
}
}
le tutoriel explique ensuite: l'expression de classe anonyme se compose des éléments suivants:
Nouvel opérateur
Nom d'une interface à implémenter ou d'une classe à étendre. Dans cet exemple, la classe anonyme met en œuvre l'interface HelloWorld.
Parenthèses contenant les arguments d'un constructeur, tout comme une expression de création d'instance de classe normale. Remarque: Lorsque vous implémentez une interface, il n'y a pas de constructeur, vous utilisez donc une paire de parenthèses vide, comme dans cet exemple.
Un corps, qui est un corps de déclaration de classe. Plus spécifiquement, dans le corps, les déclarations de méthode sont autorisées mais pas les déclarations.
Je suis confus par le point no. 4 ci-dessus. Il dit que les déclarations ne sont pas autorisées dans le corps de la déclaration de classe anonyme, mais je peux voir les déclarations utilisées à l'intérieur. (J'ai mis les commentaires Statement1 et Statement2 pour les mettre en évidence).
Pourriez-vous expliquer ce que le didacticiel veut transmettre à partir du point no. 4?
Merci d'avance.
ce n'est pas une instruction mais une définition de variable d'instance et une initialisation – sidgate
Ce sont des déclarations de champs et devraient aussi être 'private', ce qui aurait permis d'éliminer votre confusion. – Andreas