【Java】匿名类的初始化

匿名类语法

匿名类是指没有类名的内部类,必须在创建时使用 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匿名内部类

posted @ 2022-12-18 17:05  HypoPine  阅读(492)  评论(0编辑  收藏  举报