interface - Java中接口不能被实例化,那么如下的代码怎么理解?
PHP中文网
PHP中文网 2017-04-17 17:53:33
0
4
433
    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>>的一个实例了啊?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
Peter_Zhu

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.

Ty80

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal