Heim > Java > javaLernprogramm > Java lädt stillschweigend Beispielcode für die Klassenimplementierung

Java lädt stillschweigend Beispielcode für die Klassenimplementierung

黄舟
Freigeben: 2017-10-18 10:23:33
Original
1685 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zur Java-Implementierung des stillen Ladens von Klassen ein. Der Artikel stellt es ausführlich anhand von Beispielcode vor. Es hat einen gewissen Referenz-Lernwert für alle, die es brauchen Folgen Sie unten. Lassen Sie uns gemeinsam lernen.

Vorwort

In diesem Artikel werden hauptsächlich relevante Inhalte zum stillen Laden von Java vorgestellt. Der Grund für diesen Artikel liegt darin, dass wir manchmal während der Entwicklung Wir haben ein Szenario, in dem wir nur die grundlegenden Informationen einer Klasse abrufen, aber nicht die relevanten statischen Codeblöcke auslösen möchten. Diese Methode wurde in einem früheren Artikel zum „JAVA-Scanning-Paket“ verwendet Es gibt einen professionellen Namen dafür, bitte korrigieren Sie mich.

Wenn wir eine Klasse laden, verwenden wir im Allgemeinen die Methode Class.forName(String name), die ein Klassenobjekt zurückgibt und den statischen Codeblock in der Klasse auslöst. Zum Beispiel:

Schreiben wir zunächst eine Bean-Klasse, die nur statische Codeblöcke enthält.


package com.jinggujin.classloader;
public class Bean
{
 static
 {
  System.err.println("static code block.");
 }
}
Nach dem Login kopieren

Die Verwendung des Fehlerstroms dient dazu, Informationen rechtzeitig auszugeben, was zu einer Zwischenspeicherung führt, was dazu führen kann, dass die Ausgabeinformationen nicht in der richtigen Reihenfolge sind.

Dann schreiben Sie Testmethoden zum Testen.


package test;

import org.junit.Test;

public class ClassLoaderTest
{
 @Test
 public void test() throws Exception
 {
  Class.forName("com.jinggujin.classloader.Bean");
 }
}
Nach dem Login kopieren

Führen Sie die Konsolenausgabe aus und beobachten Sie sie:

statischer Codeblock.

Zu diesem Zeitpunkt wird die Konsole ausgeführt Geben Sie uns aus Der im statischen Codeblock gedruckte Inhalt beweist, dass die Verwendung von Class.forName(String name) den statischen Codeblock auslöst. Um ein stilles Laden zu erreichen, können wir diese Methode nicht verwenden. Diese Methode lädt nur die Klasse, ohne den statischen Codeblock auszulösen. Schreiben Sie dieselbe Testmethode zum Testen. loadClass(String name)


package test;
import org.junit.Test;
public class ClassLoaderTest
{
 @Test
 public void test() throws Exception
 {
  Class<?> clazz = Thread.currentThread().getContextClassLoader().loadClass("com.jinggujin.classloader.Bean");
  System.err.println(clazz.getName());
 }
}
Nach dem Login kopieren
Führen Sie die Konsolenausgabe aus und beobachten Sie sie:


com.jinggujin.classloader.Bean
Nach dem Login kopieren
Wir haben festgestellt, dass nur der von uns gedruckte Klassenname in ausgegeben wurde Konsoleninformationen und der statische Codeblock wird nicht ausgeführt. Darüber hinaus können wir tatsächlich die Umschreibemethode

von Class.forName(String name) verwenden, um den gleichen Effekt des stillen Ladens zu erzielen. forName(String name, boolean initialize, ClassLoader loader)

Zusammenfassung

Das obige ist der detaillierte Inhalt vonJava lädt stillschweigend Beispielcode für die Klassenimplementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage