recherche

Maison  >  Questions et réponses  >  le corps du texte

interface - Java中接口不能被实例化,那么如下的代码怎么理解?

    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中文网2831 Il y a quelques jours444

répondre à tous(4)je répondrai

  • 天蓬老师

    天蓬老师2017-04-17 17:55:33

    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.

    répondre
    0
  • 黄舟

    黄舟2017-04-17 17:55:33

    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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 17:55:33

    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 »

    .

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 17:55:33

    Une classe interne anonyme est équivalente à une classe qui implémente cette interface. Écrivez simplement la déclaration et la mise en œuvre ensemble.

    répondre
    0
  • Annulerrépondre