请问这是java的什么写法?就像以前第一次遇到内部类时的样子! new ArrayList<String>(){};这样是匿名内部类吧,new ArrayList<String>(){ { //这个花括号是非静态初始化块, } static { //静态初始化块 }} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 匿名内部类没有构造函数,初始化块是可以有的,你说的就是初始化块敢问你这个匿名内部类有什么用么?难道是自己修改ArrayList的实现? 我擦,明白了,用的很巧妙啊!!!竟然是为了将数据添加到List里面 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); }} 不是匿名内部类,他是定义了一个arraylist之后 ,直接在后面添加了一个初始化块,将数据add到前面这个arraylist里,有点合用的味道。 是 IKAnalysis 里面 searchHelper 里面见到的 这应该是定义一个集合容器,属于泛型,然后对其进行初始化,花括号里面是往集合容器里添加东西,并且进行了异常处理--try{} catch(){}.等号左边nowords 是被final修饰的变量,而且nowords 被List修饰,说明nowords 是集合变量.等号右边是对ArrayList容器进行初始化,然后把ArrayList赋值给nowords .至于{{}}这双花括号,我也没见过,感觉多了一对花括号。 我擦,明白了,用的很巧妙啊!!!竟然是为了将数据添加到List里面你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教. 这应该是定义一个集合容器,属于泛型,然后对其进行初始化,花括号里面是往集合容器里添加东西,并且进行了异常处理--try{} catch(){}.等号左边nowords 是被final修饰的变量,而且nowords 被List修饰,说明nowords 是集合变量.等号右边是对ArrayList容器进行初始化,然后把ArrayList赋值给nowords .至于{{}}这双花括号,我也没见过,感觉多了一对花括号。这不是匿名类。 我擦,明白了,用的很巧妙啊!!!竟然是为了将数据添加到List里面你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。 代码格式变一下再看看,哇,这不就是初始化块么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); } }}; 我擦,明白了,用的很巧妙啊!!!竟然是为了将数据添加到List里面你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。我知道了,两对花括号里面是匿名内部类。这段代码整体也可以看作是多态,=左边是父类引用.=右边是子类对象,然后new匿名内部类,生成对象。{{}}这个里面是构造代码块,构造代码块格式就是----{类{构造代码块}}。List显然是父类,ArrayList显然是子类,nowords指向子类生成的对象,也就是nowords这个容器被添加了东西,直接用nowords这个容器就可以调用许多集合里的方法。 我擦,明白了,用的很巧妙啊!!!竟然是为了将数据添加到List里面你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。你讲的是对的,不过不是将数据添加到List里面,是添加到nowords里,nowords才是集合容器。你觉得呢? 我擦,明白了,用的很巧妙啊!!!竟然是为了将数据添加到List里面你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。你讲的是对的,不过不是将数据添加到List里面,是添加到nowords里,nowords才是集合容器。你觉得呢?我明白你的意思了,是我口误了,是将数据添加到名字叫nowords的List里面 一道简单的Java题 小型图书管理系统如何增添书籍及其相关信息? 关于只查看键盘缓冲区,而不读取的问题 JDOM操作高手请进 写了一个通讯类 客户端类有个异常问题 请教 InputStreamReader的编码问题,怎么整都出不来 关于输入流的reset()一问 散分:关于jar的exe外衣,穿个马甲,普通用户就不眼生了! 关于动态数组的问题 JAVA可以在什么系统运行。 BufferedReader与BufferedInputStream重复缓冲? 找到xml里面的所有某个名称的标签
敢问你这个匿名内部类有什么用么?
难道是自己修改ArrayList的实现?
竟然是为了将数据添加到List里面
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);
}
}
是 IKAnalysis 里面 searchHelper 里面见到的
竟然是为了将数据添加到List里面
你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
竟然是为了将数据添加到List里面
你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
{
// 初始化块
try{
addAll(IOUtils.readLines(SearchHelper.class.getResourceAsStream("/stopword.dic")));
}catch(IOException e){
log.error("Unabled to read stopword file", e);
}
}
};
竟然是为了将数据添加到List里面
你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
我知道了,两对花括号里面是匿名内部类。这段代码整体也可以看作是多态,=左边是父类引用.=右边是子类对象,然后new匿名内部类,生成对象。{{}}这个里面是构造代码块,构造代码块格式就是----{类{构造代码块}}。List显然是父类,ArrayList显然是子类,nowords指向子类生成的对象,也就是nowords这个容器被添加了东西,直接用nowords这个容器就可以调用许多集合里的方法。
竟然是为了将数据添加到List里面
你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
你讲的是对的,不过不是将数据添加到List里面,是添加到nowords里,nowords才是集合容器。你觉得呢?
竟然是为了将数据添加到List里面
你理解错了吧?List是返回值类型,和int类型一样都是修饰变量的,是把数据添加到nowords 里,nowords才是容器,我这么认为的,求大神指教.
你可以试着写写,匿名内部类也是类,也可以有初始化块,匿名内部类里面的那个{}就是初始化块,这个初始化块中的操作将在匿名内部类被实例化时调用。
你讲的是对的,不过不是将数据添加到List里面,是添加到nowords里,nowords才是集合容器。你觉得呢?
我明白你的意思了,是我口误了,是将数据添加到名字叫nowords的List里面