栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

【JAVA】 new ArrayList<> () {{}} 双花括号 是什么写法?

Java 更新时间:发布时间: 百科书网 趣学号
【JAVA】 new ArrayList<> () {{}} 双花括号 是什么写法? 1、引言

很多时候,我们会看到 new ArrayList(){{}}这样的写法,跟着写的同时却会产生疑惑,为什么可以这样写呢?下面就来探究一下。

new ArrayList(){{
    add("小明");
    add("小红");
}};
2、探究
  1. 为了方便研究这种写法可行的原因,我们对双花括号进行逐层研究。我们先研究外层的花括号。
new ArrayList(){};
  1. 看到这里,明眼人应该已经看出来这其实是匿名内部类的写法。如果还看不出来的话,可以在看看下面的代码。
new ArrayList(){
    @Override
    public boolean add(String s) {
        return super.add(s);
    }
};
  1. 换成这种形式后,就更容易看出来了。new ArrayList(){}实际上就是 创建了ArrayList的一个匿名内部类的对象,只不过我们没有重写其任何方法而已。

  2. 外层花括号研究完毕,我们研究内层的花括号

new ArrayList(){
    //构造代码块
    {
        add("小明");
        add("小红");
    }
};
  1. 很显然,既然是内部类,我当然可以有构造代码块。所以实际上,里面的{}是匿名内部类的构造代码块而已。如果不好理解的话,看看以下代码。
new ArrayList(){
    //构造代码块
    { 
        add("小明");
        add("小红");
    }
	//重写父类方法
    @Override 
    public boolean add(String s) {
        return super.add(s);
    }
    //自己的方法
    public void sayHello(){
        System.out.println("hello");
    }
};
3、结语

​之前一直知道这种写法,自己也这么写过。但是始终觉得这种写法很怪异 ,今天终于抽空简单研究一下。原来就是一个匿名内部类加一个构造代码块。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/957238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号