Zusammenfassung
Lassen Sie uns kurz den Klassenlader von Java und verwandte Konzepte wie das übergeordnete Delegationsmodell, den Namespace, das Laufzeitpaket usw. vorstellen. Besprechen Sie auch einige Probleme, die beim Lernen leicht verwechselt werden können.
Funktion und Klassifizierung des Klassenladers
Wie der Name schon sagt, wird der Klassenlader zum Laden von Klassen in die JVM verwendet. Die JVM-Spezifikation definiert zwei Arten von Klassenladern: Bootstrap und benutzerdefinierte Klassenlader.
Bootstrap ist der Klassenlader, der mit der JVM geliefert wird und zum Laden von Kernklassenbibliotheken wie java.lang.* usw. verwendet wird. Beispielsweise wird java.lang.Object per Bootstrap geladen.
Java stellt die abstrakte Klasse ClassLoader bereit und alle benutzerdefinierten Klassenlader werden aus Unterklassen von ClassLoader instanziiert. Der System Class Loader ist ein spezieller benutzerdefinierter Klassenlader, der vom JVM-Implementierer bereitgestellt wird. Benutzerklassen werden standardmäßig geladen, wenn der Programmierer keinen Loader angibt. Der Systemklassenlader kann über die Methode ClassLoader.getSystemClassLoader() abgerufen werden.
Beispiel 1: Testen Sie den ClassLoader der von Ihnen verwendeten JVM
/*LoaderSample1.java*/
public class LoaderSample1 {
public static void main (String[] args) {
Class c;
ClassLoader cl; cl = ClassLoader.getSystemClassLoader();
System.out.PRintln(cl); while (cl != null) {
cl = cl.getParent();
System.out.println(cl);
}
try {
c = Class.forName("java.lang.Object");
cl = c.getClassLoader();
System.out.println("java.lang.Object's Loader ist " + cl);
c = Class.forName("LoaderSample1");
cl = c .getClassLoader();
System.out.println("LoaderSample1's Loader ist " + cl);
} Catch (Exception e) {
e.printStackTrace();
}
}
}
Das Obige ist der Inhalt des Java-Klassenladers und des Namespace. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!