interface Int {
public void show();
}
public class Test {
public static void main(String[] args) {
Int t1 = new Int() {
public void show() {
System.out.println("message");
}
};
t1.show();
}
}
4 Réponses :
Vous définissez une classe anonyme qui implémente l'interface int code> et crée immédiatement un objet de type goanonymousclassyoujustMade code>. p>.
Ceci est vraiment utile pour les gestionnaires d'événements (tels que ceux qui utilisent l'interface ActionListener).
Je ne suis pas tout à fait sûr, ce qui est bien sûr un péché à punir. Pour moi, c'est plus une question de perspective. Du point de vue de l'auteur du code, il déclare un champ, et ce champ a un type, donné avant son nom. C'est une explication propre imho. Il est plus vivant lorsque DE DECLARE Méthode par défaut dans l'interface faisant effectivement SMTH et que nous laissons le corps de la classe anonyme complètement vide, la seule fonctionnalité d'un nouvel objet provient de la méthode d'interface par défaut. Je sais que dans la réalité, la classe anonyme est créée, mais je me demandais simplement si une approche donnée ci-dessus ne peut pas être au moins concistée
Qu'est-ce que cette syntaxe spéciale pour les classes intérieures anonymes sous la hotte est créée une classe appelée test 1 $ code>. Vous pouvez trouver ce fichier de classe dans votre dossier de classe en regard de la classe de test, et si vous imprimez t1.getclass (). GetName () code> Vous pouvez également voir cela. P>
Cette notation est sténographique pour
Int t1 = new MyIntClass();
// Plus this class declaration added to class Test
private static class MyIntClass implements Int
public void show() {
System.out.println("message");
}
}
Je pense que votre objet n'a rien à voir avec l'interface. Si vous commencez toute l'interface, vous obtiendrez toujours la même sortie. Sa classe juste anonyme créée. Je pense que si vous n'utilisez pas les "outils" de la classe, vous ne pouvez pas implémenter l'interface. Mais je ne sais pas comment la collision de nommage n'arrive pas dans votre cas. p>
La classe anonyme implémente définitivement l'interface et instance de t1 int code> sera vraie.