亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取錯誤“線程“主”java.lang.ExceptionInInitializerError ”

獲取錯誤“線程“主”java.lang.ExceptionInInitializerError ”

holdtom 2022-12-15 15:19:27
我正在嘗試用 Enum Month 初始化 HashMap。但是,出現如下錯誤:“線程“主”java.lang.ExceptionInInitializerError 中的異?!?。請讓我知道為什么會出現此錯誤。我在靜態主類方法和行中得到這個ChatGroups.initializeMap();package static_initialization;import java.lang.reflect.Type;import java.util.HashMap;import java.util.Map;public class ChatGroups {    public static final Map<String, Month> months = new HashMap<String, Month>() {{        months.put("Jan", Month.January);        months.put("Feb", Month.February);        months.put("Mar", Month.March);        months.put("Apr", Month.April);        months.put("Jun", Month.June);        months.put("Jul", Month.July);        months.put("Aug", Month.August);        months.put("Sep", Month.September);        months.put("Oct", Month.October);        months.put("Nov", Month.November);        months.put("Dec", Month.December);    }};    public static void initializeMap() {        System.out.println();    }}package static_initialization;public enum Month {    January(0),    February(1),    March(2),    April(3),    May(4),    June(5),    July(6),    August(7),    September(8),    October(9),    November(10),    December(11);    private int month;    Month(int i) {        month = i;    }}package static_initialization;public class Main {    public static void main(String[] args) {        initializeMaps();    }    public static void initializeMaps() {        try {            ChatGroups.initializeMap();        } catch (Exception ex) {            System.out.println("Neelabh exception = " + ex);        }    }}請找到堆棧跟蹤Exception in thread "main" java.lang.ExceptionInInitializerError    at static_initialization.Main.initializeMaps(Main.java:10)    at static_initialization.Main.main(Main.java:5)Caused by: java.lang.NullPointerException    at static_initialization.ChatGroups$1.<init>(ChatGroups.java:9)    at static_initialization.ChatGroups.<clinit>(ChatGroups.java:8)
查看完整描述

1 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

它應該是:


public static final Map<String, Month> months = new HashMap<String, Month>() {{

    put("Jan", Month.January);

    put("Feb", Month.February);

    put("Mar", Month.March);

    put("Apr", Month.April);

    put("Jun", Month.June);

    put("Jul", Month.July);

    put("Aug", Month.August);

    put("Sep", Month.September);

    put("Oct", Month.October);

    put("Nov", Month.November);

    put("Dec", Month.December);

}};

months.put()導致NullPointerException,因為執行語句時static變量months仍然存在。nullput


作為替代方案,避免創建匿名類實例,而是編寫:


public static final Map<String, Month> months = new HashMap<String, Month>();

static {

    months.put("Jan", Month.January);

    months.put("Feb", Month.February);

    months.put("Mar", Month.March);

    months.put("Apr", Month.April);

    months.put("Jun", Month.June);

    months.put("Jul", Month.July);

    months.put("Aug", Month.August);

    months.put("Sep", Month.September);

    months.put("Oct", Month.October);

    months.put("Nov", Month.November);

    months.put("Dec", Month.December);

}


查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 81 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號