【JAVA】 new ArrayList<> () {{}} 双花括号 是什么写法?
【JAVA】 new ArrayList<> () {{}} 双花括号 是什么写法?
1、引言
很多时候,我们会看到 new ArrayList<String>(){{}}
这样的写法,跟着写的同时却会产生疑惑,为什么可以这样写呢?下面就来探究一下。
new ArrayList<String>(){{add("小明");add("小红");
}};
2、探究
- 为了方便研究这种写法可行的原因,我们对双花括号进行逐层研究。我们先研究外层的花括号。
new ArrayList<String>(){};
- 看到这里,明眼人应该已经看出来这其实是匿名内部类的写法。如果还看不出来的话,可以在看看下面的代码。
new ArrayList<String>(){@Overridepublic boolean add(String s) {return super.add(s);}
};
换成这种形式后,就更容易看出来了。
new ArrayList<String>(){}
实际上就是 创建了ArrayList的一个匿名内部类的对象,只不过我们没有重写其任何方法而已。外层花括号研究完毕,我们研究内层的花括号
new ArrayList<String>(){//构造代码块{add("小明");add("小红");}
};
- 很显然,既然是内部类,我当然可以有构造代码块。所以实际上,里面的{}是匿名内部类的构造代码块而已。如果不好理解的话,看看以下代码。
new ArrayList<String>(){//构造代码块{ add("小明");add("小红");}//重写父类方法@Override public boolean add(String s) {return super.add(s);}//自己的方法public void sayHello(){System.out.println("hello");}
};
3、结语
之前一直知道这种写法,自己也这么写过。但是始终觉得这种写法很怪异 ,今天终于抽空简单研究一下。原来就是一个匿名内部类
加一个构造代码块
。
【JAVA】 new ArrayList<> () {{}} 双花括号 是什么写法?相关推荐
- Java HashMap双花括号初始化数据的代码解析,及带来的问题分析
引言 package com.azdebugit.test.collection;import java.util.HashMap; import java.util.Map; import java ...
- react中jsx行内样式(style)的国定写法、jsx双花括号{{}}写法的解释
共index.js.index.html. TodoList.js这三个文件,主要看TodoList.js中的Input标签的style样式双花括号{{}}的写法,会在下方做全面的解释 运行效果: i ...
- (Java)ArrayList集合
ArrayList集合概述和基本使用 ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类. 数组的长度不可以发生改变,但是ArrayList的长度是可以随时变化的 对于Ar ...
- [Leedcode][JAVA][第22题括号生成][DFS][BFS][动态规划]
[问题描述]22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例:输入:n = 3 输出:["((()))",&q ...
- 【零基础学Java】—ArrayList集合概述和基本使用(十四)
[零基础学Java]-ArrayList集合概述和基本使用(十四) 一.什么是ArrayList类以及注意事项 java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此 ...
- JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
目录 1.什么是泛型 2.泛型写法 3. 特性 1.什么是泛型 什么是泛型 在讲解什么是泛型之前,我们先观察Java标准库提供的ArrayList,它可以看作"可变长度"的数组,因 ...
- java各种符号用法_java“与”符号写法与用法
java"与"符号写法与用法 java"与"符号怎么打出来的 java中"与"符号使用键盘上的 Shift + 数字7 即可打出来.(不是小 ...
- JAVA数据结构--Arraylist
思维导图 声明arraylist,添加元素,取出元素 若声明Arraylist时使用了泛型.则只能添加对应的数据类型 Arraylist <String> =new .... 泛型的尖括号 ...
- 【数据结构-JAVA】ArrayList
目录 1. 线性表 2. 顺序表(ArrayList) 2.1 什么是顺序表? 2.2 顺序表的使用 2.2.1 ArrayList 的构造方法 2.2.2 ArrayList 的常规操作 2.2.3 ...
最新文章
- Django博客系统项目需求分析
- AutoIt3(AU3)开发的智能驱动安装工具,用于系统封装,支持参数静默启动
- java 延迟加载_hibernate延迟加载(懒加载)教程讲解
- dubbo之分组聚合
- 从volume表的host字段开始学习RPC
- curl实现发送Get和Post请求(PHP)
- sqlserver201无效的许可证书_sql提示无效数字
- Swift -- AVPlayerViewController播放本地视频并且通知重复播放
- m3u8播放器-DPlayer,P2P加速 记忆播放
- 机器视觉(9)搞懂机器视觉基本内容,这份PPT就够了!
- 七大行星排列图片_八大行星排列顺序(八大行星排列顺序图)
- 总结jQuery中的DOM节点属性
- 大学计算机作业互评评语简短,同学作业互评评语
- 我的世界服务器武器修改伤害,我的世界改伤害指令 | 手游网游页游攻略大全
- Focal loss 和 GHM
- 【ORACLE】错误代码大全
- 用Python登陆新版正方教务系统获取课程表(及RSA加密密码实现)
- 机器学习之-数学基本函数(幂函数)
- 软件架构-解密电商系统-互联网BAT商品详情缓存架构
- 汽车电子MCU开发之路