匿名类语法
匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下:
new <类或接口>() {
// 类的主体
};
注意:类不仅限于 抽象类
匿名类的使用
匿名 Map 的初始化
Map<String, Integer> map = new HashMap<>() {
{
put("one", 1);
put("two", 2);
}
};
这里我使用代码块进行初始化,大括号内的 代码块,方法,变量 都不可以使用 static 修饰
遇到的bug
使用 java 8 进行构建的时候会报错
java: 无法推断java.util.HashMap<K,V>的类型参数
原因: -source 8 中不支持 '<>' 具有匿名的内部类
(请使用 -source 9 或更高版本以启用 '<>' 具有匿名的内部类)
解决办法
(1) file
- settings
- [Build,Execution,Deployment]
- compiler
- Java compiler
- 更改java版本
(2) new HashMap<String, Integer>()
要指定 泛型
匿名 Set、List 的初始化
同上
List<Integer> list = new ArrayList<>() {
{
add(1);
add(2);
}
};
Set<Integer> set = new HashSet<>() {
{
add(1);
add(2);
}
};
在匿名类中 定义 变量 ,方法
Map<String, Integer> map = new HashMap<>() {
int i ;
{
put("one", 1);
put("two", 2);
claim();
System.out.println(i);
}
private void claim() {
System.out.println("巴拉巴拉巴拉巴拉巴拉巴拉");
}
};
引用 : Java匿名类,Java匿名内部类
标签:初始化,java,HashMap,匿名,new,Java From: https://www.cnblogs.com/HypoPine/p/16990584.html