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