亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java.lang.ExceptionInInitializerError異常的解決方法

 更新時(shí)間:2017年10月31日 15:17:11   作者:面條啊Andrew  
這篇文章主要為大家詳細(xì)介紹了java.lang.ExceptionInInitializerError異常的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天在開發(fā)的過程中,遇到j(luò)ava.lang.ExceptionInInitializerError異常,百度查了一下,順便學(xué)習(xí)學(xué)習(xí),做個(gè)筆記

靜態(tài)初始化程序中發(fā)生意外異常的信號,拋出ExceptionInInitializerError表明在計(jì)算靜態(tài)初始值或靜態(tài)變量的初始值期間發(fā)生異常。

要理解這個(gè)異常從Java類中的靜態(tài)變量初始化過程說起,在Java類中靜態(tài)變量的初始化順序和靜態(tài)變量的聲明順序是一致的。示例程序?yàn)椋?/p>

package com.lang.ininitialException;

import java.util.ArrayList;
import java.util.List;

public class StaticParams {

  private static int NUM_A = getA();
  private static int NUM_B = getB();
  private static List<String> LIST_A = getListA();
  
  
  private StaticParams() {
    System.out.println("初始構(gòu)造方法");
  }
  
  public static StaticParams getInstance() {
    return new StaticParams();
  }
  
  private static int getA(){
    System.out.println("初始化A");
    return 5;
  }
  
  private static int getB() {
    System.out.println("初始化B");
    return 10;
  }
  
  private static List<String> getListA() {
    System.out.println("初始化List");
    return new ArrayList<String>();
  }
  
  public static void main(String args[]){
    StaticParams.getInstance();
  }
}

運(yùn)行結(jié)果:

初始化A
初始化B
初始化List
初始構(gòu)造方法

如果交換NUM_A和NUM_B的位置,那么結(jié)果就是:

初始化B
初始化A
初始化List
初始構(gòu)造方法

即:在某個(gè)靜態(tài)變量的初始化還未執(zhí)行之前就使用該靜態(tài)變量。

復(fù)現(xiàn)ExceptionInInitializerError異常的程序如下:

package com.lang.ininitialException;

import java.util.ArrayList;
import java.util.List;

public class StaticParamsSingle {

  private static StaticParamsSingle sps = buildStaticParams();
//  private static StaticParamsSingle sps = new StaticParamsSingle();
  private static int NUM_A = getA();
  private static int NUM_B = getB();
  private static List<String> LIST_A = getListA();
  
  private StaticParamsSingle(){
    System.out.println("初始化構(gòu)造方法");
  }
  
  private static StaticParamsSingle buildStaticParams() {
    if (sps == null) {
      sps = new StaticParamsSingle();
    }
    
    int result = NUM_A + NUM_B;
    System.out.println("result is:" + result);
    LIST_A.add("haha");
    return sps;
  }
  
  public static StaticParamsSingle getInstance() {
    return sps;
  }
  
  private static int getA(){
    System.out.println("初始化A");
    return 5;
  }
  
  private static int getB() {
    System.out.println("初始化B");
    return 10;
  }
  
  private static List<String> getListA() {
    System.out.println("初始化List");
    return new ArrayList<String>();
  }
  
  public static void main(String args[]) {
    StaticParamsSingle.getInstance();
    
  }
}

sps變量初始化中使用到的其他的變量,但其他的靜態(tài)變量還未初始化,故而在sps初始化時(shí)就會(huì)產(chǎn)生異常:

初始化構(gòu)造方法
result is:0
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
    at com.lang.ininitialException.StaticParamsSingle.buildStaticParams(StaticParamsSingle.java:25)
    at com.lang.ininitialException.StaticParamsSingle.<clinit>(StaticParamsSingle.java:8)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用反射方式獲取JPA Entity的屬性和值

    使用反射方式獲取JPA Entity的屬性和值

    這篇文章主要介紹了使用反射方式獲取JPA Entity的屬性和值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java魔法值處理的四種方式

    Java魔法值處理的四種方式

    這篇文章主要介紹了Java魔法值處理的四種方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java 格式化輸出數(shù)字的方法

    java 格式化輸出數(shù)字的方法

    在實(shí)際工作中,常常需要設(shè)定數(shù)字的輸出格式,如以百分比的形式輸出,或者設(shè)定小數(shù)位數(shù)等,現(xiàn)稍微總結(jié)如下
    2014-01-01
  • Java面向?qū)ο蠡A(chǔ)知識之抽象類和接口

    Java面向?qū)ο蠡A(chǔ)知識之抽象類和接口

    這篇文章主要介紹了Java面向?qū)ο蟮某橄箢惡徒涌?文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-11-11
  • Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot 2.0快速構(gòu)建服務(wù)組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot 2.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java中常用修飾符的使用方法匯總

    Java中常用修飾符的使用方法匯總

    下面小編就為大家?guī)硪黄狫ava中常用修飾符的使用方法匯總。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 使用@Transactional 設(shè)置嵌套事務(wù)不回滾

    使用@Transactional 設(shè)置嵌套事務(wù)不回滾

    這篇文章主要介紹了使用@Transactional 設(shè)置嵌套事務(wù)不回滾問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java如何利用Socket傳輸信息或文件

    Java如何利用Socket傳輸信息或文件

    這篇文章主要介紹了Java如何利用Socket傳輸信息或文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java實(shí)現(xiàn)文件加密解密多種方法

    java實(shí)現(xiàn)文件加密解密多種方法

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)文件加密解密多種方法的相關(guān)資料,?Java支持多種加密解密算法,常用的有DES、AES、RSA等,需要的朋友可以參考下
    2023-07-07
  • 微信、支付寶二碼合一掃碼支付實(shí)現(xiàn)思路(java)

    微信、支付寶二碼合一掃碼支付實(shí)現(xiàn)思路(java)

    這篇文章主要為大家詳細(xì)介紹了微信、支付寶二碼合一掃碼支付實(shí)現(xiàn)思路,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論