J'ai deux classes et une interface.Instruction d'impression non appelée dans la classe anonyme transmise au constructeur de la classe
Interface:
public interface MyBirthdayEvent {
void itsMyBirthday();
}
Première classe:
public class MyBirthdayButton
{
public void addOnClickedListener(MyBirthdayEvent mbe){}
}
Deuxième classe:
public class MyBirthday {
private MyBirthdayButton myBirthdayButton = new MyBirthdayButton();
MyBirthday() {
myBirthdayButton.addOnClickedListener(new MyBirthdayEvent() {
public void itsMyBirthday() {
System.out.println("Happy Birthday");
}
});
}
}
Puis, en principal, j'ai ceci:
public class TestThisStuff {
public static void main(String[] args) {
MyBirthday myBirthday = new MyBirthday();
}
}
Comme le montre le code, j'utilise une classe anonyme dans le constructeur MyBirthday. Ce faisant, j'essaye d'obtenir la chaîne "Happy Birthday"
pour imprimer à la console.
Mon problème est, quand j'appelle le constructeur MyBirthday
en main en faisant un nouvel objet myBirthday, je ne vois pas la chaîne "Happy Birthday"
imprimer sur la console. Ne devrait-il pas imprimer sur la console? Si non, ce que je fais mal?
Ainsi, le constructeur de 'MyBirthday' ajoute le' onClilckedListener'. Qu'est-ce qui appelle exactement cette méthode? Est-ce censé être accroché dans une interface graphique comme Swing? Comme le code est maintenant, rien ne va invoquer la méthode. Sauf si je ne lis pas quelque chose correctement. – KevinO
Dans le principal, quand j'appelle le constructeur, ne devrait-il pas appeler l'instruction d'impression puisque l'instruction d'impression habite dans le constructeur? –
L'instruction print n'est pas dans le constructeur, elle est dans la méthode 'itsMyBirthday()' qui n'est pas invoquée (comme l'ont indiqué les réponses). Appelez la méthode ou déplacez l'instruction print pour qu'elle se trouve réellement dans le constructeur. – KevinO