Méthode Local Inner Class
-
09-06-2019 - |
Question
public class Test {
public static void main(String[] args) {
}
}
class Outer {
void aMethod() {
class MethodLocalInner {
void bMethod() {
System.out.println("Inside method-local bMethod");
}
}
}
}
Quelqu'un peut-il me dire comment imprimer le message à partir de bMethod
?
La solution
Vous ne pouvez instancier MethodLocalInner
que dans aMethod
. Alors
void aMethod() {
class MethodLocalInner {
void bMethod() {
System.out.println("Inside method-local bMethod");
}
}
MethodLocalInner foo = new MethodLocalInner(); // Default Constructor
foo.bMethod();
}
Autres conseils
Dans la méthode aMethod après la déclaration de la classe MethodLocalInner , vous pouvez par exemple effectuer l'appel suivant:
new MethodLocalInner().bMethod();
Pourquoi ne créez-vous pas simplement une instance de MethodLocalInner
dans aMethod
et appelez bMethod
sur la nouvelle instance?
Cela pourrait vous aider à démarrer (je n'ai rien de pratique à tester avec). Notez la syntaxe de constructeur modifiée:
http://java.sun.com/docs /books/tutorial/java/javaOO/nested.html
Vous devez appeler new Outer (). aMethod () dans votre méthode principale. Vous devez également ajouter une référence à MethodLocalInner (). BMethod () dans votre aMethod (), comme ceci:
public class Test {
public static void main(String[] args) {
new Outer().aMethod();
}
}
void aMethod() {
class MethodLocalInner {
void bMethod() {
System.out.println("Inside method-local bMethod");
}
}
new MethodLocalInner().bMethod();
}