- 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
//实例化后才能访问值
}
}
--本文作者:【ngLee 】
--关于博文:如果有错误的地方,还请留言指正。如转载请注明出处!如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!