new ArrayList<String>(){};这样是匿名内部类吧,
new ArrayList<String>(){
   {
     //这个花括号是非静态初始化块,
   }
  static {
    //静态初始化块
  }
}

解决方案 »

  1.   

    匿名内部类没有构造函数,初始化块是可以有的,你说的就是初始化块
    敢问你这个匿名内部类有什么用么?
    难道是自己修改ArrayList的实现?
      

  2.   

    我擦,明白了,用的很巧妙啊!!!
    竟然是为了将数据添加到List里面
      

  3.   


    private final static List<String> nowords = new ArrayList<String>(){{
            try{
                addAll(IOUtils.readLines(SearchHelper.class.getResourceAsStream("/stopword.dic")));
            }catch(IOException e){
                log.error("Unabled to read stopword file", e);
            }
        }}; 是不是等同于private final static List<String> nowords = new ArrayList<String>();
    static {//静态初始化块
        try{
           nowords.addAll(IOUtils.readLines(SearchHelper.class.getResourceAsStream("/stopword.dic")));
        }catch(IOException e){
            log.error("Unabled to read stopword file", e);
        }
    }
      

  4.   

    不是匿名内部类,他是定义了一个arraylist之后 ,直接在后面添加了一个初始化块,将数据add到前面这个arraylist里,有点合用的味道。
      

  5.   


    是 IKAnalysis 里面 searchHelper 里面见到的
      

  6.   

    这应该是定义一个集合容器,属于泛型,然后对其进行初始化,花括号里面是往集合容器里添加东西,并且进行了异常处理--try{} catch(){}.等号左边nowords 是被final修饰的变量,而且nowords 被List修饰,说明nowords 是集合变量.等号右边是对ArrayList容器进行初始化,然后把ArrayList赋值给nowords .至于{{}}这双花括号,我也没见过,感觉多了一对花括号。
      

  7.   

    我擦,明白了,用的很巧妙啊!!!
    竟然是为了将数据添加到List里面
    你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
      

  8.   

    这应该是定义一个集合容器,属于泛型,然后对其进行初始化,花括号里面是往集合容器里添加东西,并且进行了异常处理--try{} catch(){}.等号左边nowords 是被final修饰的变量,而且nowords 被List修饰,说明nowords 是集合变量.等号右边是对ArrayList容器进行初始化,然后把ArrayList赋值给nowords .至于{{}}这双花括号,我也没见过,感觉多了一对花括号。这不是匿名类。
      

  9.   

    我擦,明白了,用的很巧妙啊!!!
    竟然是为了将数据添加到List里面
    你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
    你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
      

  10.   

    代码格式变一下再看看,哇,这不就是初始化块么private final static List<String> nowords = new ArrayList<String>(){
        {
        // 初始化块
            try{
                addAll(IOUtils.readLines(SearchHelper.class.getResourceAsStream("/stopword.dic")));
            }catch(IOException e){
                log.error("Unabled to read stopword file", e);
            }
        }
    }; 
      

  11.   

    我擦,明白了,用的很巧妙啊!!!
    竟然是为了将数据添加到List里面
    你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
    你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
    我知道了,两对花括号里面是匿名内部类。这段代码整体也可以看作是多态,=左边是父类引用.=右边是子类对象,然后new匿名内部类,生成对象。{{}}这个里面是构造代码块,构造代码块格式就是----{类{构造代码块}}。List显然是父类,ArrayList显然是子类,nowords指向子类生成的对象,也就是nowords这个容器被添加了东西,直接用nowords这个容器就可以调用许多集合里的方法。
      

  12.   

    我擦,明白了,用的很巧妙啊!!!
    竟然是为了将数据添加到List里面
    你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
    你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
    你讲的是对的,不过不是将数据添加到List里面,是添加到nowords里,nowords才是集合容器。你觉得呢?
      

  13.   

    我擦,明白了,用的很巧妙啊!!!
    竟然是为了将数据添加到List里面
    你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
    你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
    你讲的是对的,不过不是将数据添加到List里面,是添加到nowords里,nowords才是集合容器。你觉得呢?
    我明白你的意思了,是我口误了,是将数据添加到名字叫nowords的List里面