美文网首页
工作笔记(九)

工作笔记(九)

作者: overflow_e4e4 | 来源:发表于2019-10-19 16:10 被阅读0次

    学习到了新的写法:

            List<Integer> list =  new ArrayList<Integer>() {
                {
                    add(1);
                    add(2);
                    add(3);
                }
            };
    

    这种写法初看很特殊,类似于new ArrayList<Integer>(){.....},其实是内部匿名类的写法,但是缺少了方法名,想了想才明白其实中间部分恰好是一个构造函数。但还是有疑问,因为ArrayList可不止一个构造函数。
    为此我做了一些实验:
    因为考虑ArrayList是有多个构造函数的,我这样写也是可以的:

          List<Integer> list =  new ArrayList<Integer>(1) {
                {
                    add(1);
                    add(2);
                    add(3);
                }
    
            };
    

    这是用的带参的构造函数,所以中间那部分不是调用的无参数构造函数,而是因为匿名类的特殊性根据,new XXX(...){{...}},在()中决定使用哪个构造函数,而第二个{}中的内容会作为代码段加到那个构造函数中。
    这个匿名内部类编译后大概是这样:

    匿名内部类编译后

    我个人认为这种写法非常好,因为有的集合就是需要初始化一些信息,这种不需要我们再新写一个类去做这些事情,即插即用。

    相关文章

      网友评论

          本文标题:工作笔记(九)

          本文链接:https://www.haomeiwen.com/subject/jkfnmctx.html