JAVA常量类初始化数据处理


  • 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
        //实例化后才能访问值
    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM