Java初始化方法:类、容器

时间:2021-07-10 19:43:40

Java初始化方法:类、容器

  初始化类(非final): Struts2的DefaultActionMapper类中:      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是PrefixTrie的方法:public void put(String prefix, Object value) ;

  初始化容器:   集合框架中(collections, 如list, map, set等)原始方法:   Set<String> myset = new HashSet<String>();myset.add("aa");myset.add("bb");myset.add("cc");myset.add("dd");domethod(myset);   静态初始的方法:   private static final Set<String> myset = new HashSet<String>();static { myset.add("aa");    myset.add("bb");    myset.add("cc");    myset.add("dd");}   双括弧语法(double-brace syntax)建立并初始化一个新的集合:   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");}});   第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class); 第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。