public static final Function<String, Set<String>> MAPPING_FUNCTION = new Function<String, Set<String>>() {
@Override
public Set<String> apply(String s) {
return new HashSet<>();
}
};
MAPPING_FUNCTION已经是接口Function<String, Set<String>>的一个实例了啊?
Ce n'est pas une instance d'interface, mais une instance d'une classe interne anonyme qui implémente l'interface.
Vous n’avez pas remarqué le corset après ? C'est évidemment différent du formulaire que nous utilisons habituellement
A a=new A()
.Il est recommandé de lire les connaissances associées sur les cours internes.
C'est une façon d'écrire des classes internes anonymes. En fait, cette façon d'écrire équivaut à écrire une nouvelle classe puis à implémenter l'interface.
Le problème est que créer une nouvelle classe juste pour implémenter une méthode de l'interface est trop compliqué, donc la plupart des méthodes d'écriture écriront directement une classe interne anonyme.
Parce que nous ne prêtons pas attention au nom de la classe, nous prêtons uniquement attention à son implémentation spécifique, qui est également un scénario d'utilisation courant des classes internes anonymes.
Le chapitre 6 de « Crazy Java Lecture Notes » contient des explications détaillées. Si vous ne voulez pas lire le livre, recherchez simplement « classes internes anonymes »
.Une classe interne anonyme est équivalente à une classe qui implémente cette interface. Écrivez simplement la déclaration et la mise en œuvre ensemble.