2017-11-13 5 views
-1

Java에서 클래스는 클래스의 객체가 생성되기 직전에로드됩니다. 클래스는 프로그램의 전체 기간 동안 한 번만로드됩니다. 이 경우 통계가 초기화되고 정적 블록이 실행됩니다. 이것은 주기적 일 수 있습니다. 클래스가 완전히 초기화되기 전에 클래스 자체에 클래스의 객체를 만들었습니다. 예를 들어 :순환 클래스 초기화

public class MyTestClass{ 

public static MyTestClass myTest= new MyTestClass(); 

} 


public class Beginner{ 

public static void main(String[] args){ 
System.out.println(MyTestClass.myTest==null); 
} 
} 

나는 매우 처음으로) (주에서 MyTestClass.myTest를 호출 할 때; MyTestClass가로드되는 동안로드되고있는 동안 MyTestClass의 객체를 만들려고합니다. 순환 적 클래스 로딩을 생성하지 않아야하며 이는 무한 할 수 있습니까? java에서 어떻게 처리됩니까?

+0

코드가 컴파일되지 않습니다. 귀하의 질문에 실제 코드를 게시하십시오. –

+0

'public void Beginner {'대신에 public class Beginner {'? –

+0

나는 그가 그렇게 생각한다는 생각 :-) – IEE1394

답변

1

이벤트 시퀀스는 다음과 같이이다 : 사전에 (클래스로드 및 검증

  1. 은 모든 정적 멤버들 null로 설정된

    0
  2. 정적 초기화되고 실행되는 클래스의 블록 클래스를 필요한 코드는 귀하의 경우

초기화의 실행을 진행

  • 순서)

    0을 포함
    public static MyTestClass myTest= new MyTestClass(); 
    

    즉, main에있는 코드는 MyTestClass.myTest의 코드가 null이 아님을 의미합니다.

    MyTestClass.myTest이 null 인 유일한 시간은 정적 초기화 프로그램에서 생성 된 MyTestClass 인스턴스의 생성자에 있습니다.