다음 텍스트를 이해할 수 없습니다 ... <clinit>
빈 생성자를위한 것입니까? 두 가지 버전이 중요한 이유는 무엇입니까?
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
2.9. Special Methods
Java 가상 머신 레벨에서 모든 생성자 (§2.12)는 특수 이름을 가진 인스턴스 초기화 메소드로 나타납니다
<init>
. 이 이름은 컴파일러에서 제공합니다. 이름<init>
은 유효한 식별자가 아니기 때문에 Java 프로그래밍 언어로 작성된 프로그램에서 직접 사용할 수 없습니다. 인스턴스 초기화 메소드는 invokespecial 명령어에 의해 Java 가상 머신 내에서만 호출 될 수 있으며 초기화되지 않은 클래스 인스턴스에서만 호출 될 수 있습니다. 인스턴스 초기화 메서드는 파생 된 생성자의 액세스 권한 (§2.7.4)을 사용합니다.클래스 또는 인터페이스에는 클래스 또는 인터페이스 초기화 메서드가 하나만 있으며 해당 메서드를 호출하여 초기화됩니다 (§2.17.4). 클래스 또는 인터페이스의 초기화 메서드는 정적이며 인수를 사용하지 않습니다. 특별한 이름이
<clinit>
있습니다. 이 이름은 컴파일러에서 제공합니다. 이름<clinit>
이 유효한 식별자가 아니기 때문에 Java 프로그래밍 언어로 작성된 프로그램에서 직접 사용할 수 없습니다. 클래스 및 인터페이스 초기화 메소드는 JVM (Java Virtual Machine)에 의해 내재적으로 호출됩니다. Java 가상 머신 inw2struction에서 직접 호출되지 않지만 클래스 초기화 프로세스의 일부로 간접적으로 만 호출됩니다.
CL
을 의미합니까?