정적 변수의 초기화 순서와 문제
993 단어 정적 변수
public class Elvis{
public static final Elvis INSTANCE=new Elvis();
private static final int CURRENT_YEAR=Calendar.getInstance().get(Calendar.YEAR);
private final int beltSize;
private Elvis(){
beltSize=CURRENT_YEAR-1930;
}
private int beltSize(){
return beltSize;
}
public static void main(String args[]){
System.out.println("Elvis wears a size : "+INSTANCE.beltSize()+" belt.");
}
}
올해는 2014년이기 때문에 벨시즈의 결과가 84(2014-1930)라고 생각할 수도 있다.하지만 벨시즈가 -1930이라는 사실이 입증됐다.
원인 분석: public static final Elvis INSTANCE = new Elvis()를 실행합니다.함수를 구성할 때CURRENTYEAR가 0이 되었기 때문에 BeltSize는 -1930이 되었습니다.
사실 두 문장의 순서만 바꾸면 되고 클래스 초기화 순환 문제를 해결할 수 있다.
private static final int CURRENT_YEAR=Calendar.getInstance().get(Calendar.YEAR);
public static final Elvis INSTANCE=new Elvis();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정적 변수와 함수하나의 함수를 정의한 후 점호“.”를 통해 추가된 속성과 함수는 대상 자체를 통해 여전히 접근할 수 있지만 그 실례는 접근할 수 없다. 이런 변수와 함수는 각각 静态变量와静态函数라고 불린다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.