Ich kann den folgenden Text nicht verstehen ... Bedeutet das, dass <clinit>es sich um leere Konstruktoren handelt? Warum ist es wichtig, zwei verschiedene Versionen zu haben?
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
2.9. Special MethodsAuf der Ebene der Java Virtual Machine wird jeder Konstruktor (§2.12) als Instanzinitialisierungsmethode mit dem speziellen Namen angezeigt
<init>. Dieser Name wird von einem Compiler bereitgestellt. Da der Name<init>kein gültiger Bezeichner ist, kann er nicht direkt in einem Programm verwendet werden, das in der Programmiersprache Java geschrieben ist. Instanzinitialisierungsmethoden können nur innerhalb der Java Virtual Machine durch die Anweisung invokespecial aufgerufen werden, und sie können nur für nicht initialisierte Klasseninstanzen aufgerufen werden. Eine Instanzinitialisierungsmethode übernimmt die Zugriffsberechtigungen (§2.7.4) des Konstruktors, von dem sie abgeleitet wurde.Eine Klasse oder Schnittstelle hat höchstens eine Klassen- oder Schnittstelleninitialisierungsmethode und wird durch Aufrufen dieser Methode initialisiert (§2.17.4). Die Initialisierungsmethode einer Klasse oder Schnittstelle ist statisch und akzeptiert keine Argumente. Es hat den besonderen Namen
<clinit>. Dieser Name wird von einem Compiler bereitgestellt. Da der Name<clinit>kein gültiger Bezeichner ist, kann er nicht direkt in einem Programm verwendet werden, das in der Programmiersprache Java geschrieben ist. Klassen- und Schnittstelleninitialisierungsmethoden werden implizit von der Java Virtual Machine aufgerufen. Sie werden niemals direkt von einer Java Virtual Machine inw2struction aufgerufen, sondern nur indirekt als Teil des Klasseninitialisierungsprozesses.
CL?