Wie entscheidet die JVM, in welcher Reihenfolge Klassen initialisiert werden ( aufrufen)?Java

Java-Forum
Anonymous
 Wie entscheidet die JVM, in welcher Reihenfolge Klassen initialisiert werden ( aufrufen)?

Post by Anonymous »

Aus meinem Wissen, wenn JVM Code für A's Clinit lädt und generiert, wird der Compiler zunächst einen Methodenaufruf an JVM Internal ausgibt, um B zu initialisieren B und dann die Methode -Aufruf/Feldnutzung von kompilieren B Normalerweise. Zur Laufzeit ist B so sichergestellt, dass B vor dem Feld oder der Methode initialisiert wird. < /p>

Bitte korrigieren Sie mich, wenn ich im obigen Fehler einen Fehler gemacht habe. < /p>

Dann verstehe ich nicht, wie JVM mit einer Situation wie unten umgeht. < /p>

Code: Select all

public class A {
public static A a = new A(B.b);
public A(B b) {
a = null;
}

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

public class B {
public static B b = new B(A.a);
public B(A a) {}
}
Könnte jemand erklären, wie diese beiden Klassen initialisiert werden, da bei beiden zuerst der andere Teil initialisiert werden muss? Und warum gibt die Hauptmethode in A false zurück, da das statische Feld a im Konstruktor von A auf Null gesetzt werden sollte?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post