博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JAVA常量类初始化数据处理

Posted on 2021-01-11 23:50  海绵谷  阅读(750)  评论(0编辑  收藏  举报
  • java双括号的初始化确实很方便,特别是在常量文件中,无可替代。但是这样初始化的map,如果在调用的时候没有实例化java8Base对象,那么就算代码块中新增了数据,也是无法访问到新增数据的。
public class Java8Base implements Serializable {
    {
        USERMAP.put("TEST","测试");
        System.out.println("静态代码快");
    }
    public static final String USER_NOT = "404";
    public static Map<String,String> USERMAP = new HashMap<String, String>(){{
        System.out.println("--usremap-");
        put(USER_NOT,"用户不存在");
    }};
    //执行顺序  --usremap-  ,再是 静态代码快
}
public class TestMain {
    public static void main(String[] args) {
        
        String a = USERMAP.get("404");
        System.out.println(a);
        //404的值是用户不存在
        String b = USERMAP.get("TEST");
        //Java8Base java8Base = new Java8Base();
        System.out.println(b);
        //注释调 TEST 的值是 nulll,直接Java8Base.USERMAP 访问TEST 的值也是null
        //实例化后才能访问值
    }
}