2014-04-29 1 views
1

이것은 Java의 기본 생성자 동작에 대한 질문입니다. 다음 코드에서 그래서 기본 생성자가 선언 된 순서대로 두 변수를 초기화 할 것을 모든 JVM의 보장되고, 변수가 초기화, 아직 하나가 다른에 달려있다생성자의 작업 순서가 보장됩니까?

public class LocalIDSupplier implements IDSupplier { 
private BiMap<BMTPropertyContainer, String> localid = HashBiMap.create(); 
private BiMap<String, BMTPropertyContainer> inverse = localid.inverse(); 

    //Some methods 
} 

두 개의 인스턴스를 냈다? 분명히 명시 적 생성자를 생성하여이를 보장 할 수는 있지만 컴파일러에는이 문제가 없습니다. 초기화에서 이러한 유형의 종속성에 문제가 있습니까?

답변

4

Java Language Specification 상태

인스턴스 초기화이 클래스 인스턴스 변수 초기화를 실행 인스턴스 변수 초기화 값 할당에 대응하는 인스턴스 변수 에 좌우 질서 클래스의 소스 코드에 텍스트로 표시됩니다. 이니셜 라이저 중 하나를 실행하면 예외가 발생하면 이니셜 라이저가 더 이상 처리되지 않으며이 절차는 동일한 예외와 함께 갑자기 을 완료합니다. [...]

+1

간단히 말해서, 선언 된 순서는 초기화 순서에 따라 보존되며, 아니요, 초기화에는 이러한 유형의 종속성에는 문제가 없습니다. :) ' 정적 '. – hiergiltdiestfu

관련 문제