Maison >Java >javaDidacticiel >Explication détaillée des classes et conteneurs de la méthode d'initialisation Java

Explication détaillée des classes et conteneurs de la méthode d'initialisation Java

迷茫
迷茫original
2017-03-26 15:53:422025parcourir

Méthode d'initialisation Java : classe, conteneur

Classe d'initialisation (non finale) :

Dans la classe DefaultActionMapper de Struts2 :

public DefaultActionMapper() {
    prefixTrie = new PrefixTrie() { {
        put(METHOD_PREFIX, new ParameterAction() {
            public void execute(String key, ActionMapping mapping) {
                if (allowDynamicMethodCalls) {
                    mapping.setMethod(key.substring( METHOD_PREFIX.length()));
                }
            }
         }); //。。。。
     }};
}

put est la méthode of PrefixTrie : public void put(String prefix, Object value) ;

Conteneur d'initialisation :

Méthode originale dans le cadre de collection (collections, telles que liste, carte, ensemble, etc.) :

Set<String> myset = new HashSet<String>();
myset.add("aa");
myset.add("bb");
myset.add("cc");
myset.add("dd");
domethod(myset);

Méthode d'initialisation statique :

private static final Set<String> myset = new HashSet<String>();
static { myset.add("aa");
    myset.add("bb");
    myset.add("cc");
    myset.add("dd");
}

La syntaxe à double accolade crée et initialise une nouvelle collection :

private static final Set<String> myset = new HashSet<String>() {{
    add("aa");
    add("bb");
    add("cc");
    add("dd");
}};
doMethod(new HashSet<String>() {{
    add("aa");
    add("bb");
    add("cc");
    add("dd");
}});

Le premier niveau de parenthèses définit en fait une classe anonyme interne (Anonymous Inner Class)

Le deuxième niveau de parenthèses définit en fait An bloc d'initialisation d'instance (bloc d'initialisation d'instance), ce bloc est exécuté lors de la construction de la classe anonyme interne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn