ClassLoader Klasse

Definition

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

[Android.Runtime.Register("java/lang/ClassLoader", DoNotGenerateAcw=true)]
public abstract class ClassLoader : Java.Lang.Object
[<Android.Runtime.Register("java/lang/ClassLoader", DoNotGenerateAcw=true)>]
type ClassLoader = class
    inherit Object
Vererbung
ClassLoader
Abgeleitet
Attribute

Hinweise

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist. Die -Klasse ClassLoader ist eine abstrakte Klasse. Angesichts des binären Namens einer Klasse sollte ein Klassenladeprogramm versuchen, Daten zu suchen oder zu generieren, die eine Definition für die Klasse darstellen. Eine typische Strategie besteht darin, den Namen in einen Dateinamen zu transformieren und dann eine "Klassendatei" dieses Namens aus einem Dateisystem zu lesen.

Jedes Class <tt>Class</tt> Objekt enthält ein Class#getClassLoader() reference bis zum, das ClassLoader es definiert hat.

Class Objekte für Arrayklassen werden nicht von Klassenladeprogrammen erstellt, sondern automatisch erstellt, wie von der Java-Runtime erforderlich. Der Klassenladeer für eine Arrayklasse, wie von Class#getClassLoader() zurückgegeben wird, ist mit dem Klassenladeprogramm für seinen Elementtyp identisch. Wenn der Elementtyp ein primitiver Typ ist, verfügt die Arrayklasse über keinen Klassenladevorgang.

Anwendungen implementieren Unterklassen von, ClassLoader um die Art und Weise zu erweitern, in der der virtuelle Java-Computer Klassen dynamisch lädt.

Klassenladeprogramme können in der Regel von Sicherheitsmanagern verwendet werden, um Sicherheitsdomänen anzugeben.

Die ClassLoader -Klasse verwendet ein Delegierungsmodell, um nach Klassen und Ressourcen zu suchen. Jede instance von ClassLoader verfügt über ein zugeordnetes übergeordnetes Klassenladeprogramm. Wenn eine Klasse oder Ressource gesucht werden soll, delegieren instance ClassLoader die Suche nach der Klasse oder Ressource an den übergeordneten Klassenladeprogramm, bevor sie versucht, die Klasse oder Ressource selbst zu finden. Das integrierte Klassenladeprogramm des virtuellen Computers, der als "Bootstrap-Klassenladeprogramm" bezeichnet wird, verfügt selbst nicht über ein übergeordnetes Element, sondern kann als übergeordnetes Element einer ClassLoader instance dienen.

Klassenladeprogramme, die das gleichzeitige< Laden von Klassen unterstützen, werden als <em>parallelfähige/em-Klassenladeprogramme> bezeichnet und müssen sich zum Zeitpunkt der Klasseninitialisierung registrieren, indem die #registerAsParallelCapable <tt>ClassLoader.registerAsParallelCapable</tt> Methode aufgerufen wird. Beachten Sie, dass die ClassLoader Klasse standardmäßig als parallelfähig registriert ist. Ihre Unterklassen müssen sich jedoch weiterhin registrieren, wenn sie parallel fähig sind. <br> In Umgebungen, in denen das Delegierungsmodell nicht streng hierarchisch ist, müssen Klassenladevorgänge parallel fähig sein. Andernfalls kann das Laden von Klassen zu Deadlocks führen, da die Ladesperre für die Dauer des Klassenladevorgangs gehalten wird (siehe #loadClass <tt>loadClass</tt> Methoden).

Normalerweise lädt der virtuelle Java-Computer Klassen plattformabhängig aus dem lokalen Dateisystem. Auf UNIX-Systemen lädt der virtuelle Computer beispielsweise Klassen aus dem verzeichnis, das von der Umgebungsvariablen CLASSPATH definiert wird.

Einige Klassen stammen jedoch möglicherweise nicht aus einer Datei. sie können aus anderen Quellen wie dem Netzwerk stammen oder von einer Anwendung erstellt werden. Die -Methode #defineClass(String, byte[], int, int) <tt>defineClass</tt> konvertiert ein Array von Bytes in ein instance der Klasse Class. Instanzen dieser neu definierten Klasse können mit Class#newInstance <tt>Class.newInstance</tt>erstellt werden.

Die Methoden und Konstruktoren von Objekten, die von einem Klassenladeprogramm erstellt wurden, verweisen möglicherweise auf andere Klassen. Um die klasse(en) zu bestimmen, auf die verwiesen wird, ruft der virtuelle Java-Computer die #loadClass <tt>loadClass</tt> Methode des Klassenladeprogramms auf, von dem die Klasse ursprünglich erstellt wurde.

Beispielsweise könnte eine Anwendung ein Netzwerkklassenladeprogramm erstellen, um Klassendateien von einem Server herunterzuladen. Beispielcode könnte wie folgt aussehen:

<Blockquote>

ClassLoader loader&nbsp;= new NetworkClassLoader(host,&nbsp;port);
              Object main&nbsp;= loader.loadClass("Main", true).newInstance();
                  &nbsp;.&nbsp;.&nbsp;.

</Blockquote>

Die Unterklasse des Netzwerkklassenladeers muss die Methoden #findClass <tt>findClass</tt> und loadClassData zum Laden einer Klasse aus dem Netzwerk definieren. Nachdem die Bytes heruntergeladen wurden, aus denen die Klasse besteht, sollte die -Methode #defineClass <tt>defineClass</tt> verwendet werden, um eine Klasse instance zu erstellen. Eine Beispielimplementierung ist:

<Blockquote>

class NetworkClassLoader extends ClassLoader {
                    String host;
                    int port;

                    public Class findClass(String name) {
                        byte[] b = loadClassData(name);
                        return defineClass(name, b, 0, b.length);
                    }

                    private byte[] loadClassData(String name) {
                        // load the class data from the connection
                        &nbsp;.&nbsp;.&nbsp;.
                    }
                }

</Blockquote>

<h3> "Name">Binärnamen</h3>

Jeder Klassenname, der als String Parameter für Methoden in ClassLoader bereitgestellt wird, muss ein binärer Name sein, der durch <cite>The Java&trade definiert ist. Sprachspezifikation</Cite>.

Beispiele für gültige Klassennamen sind: <blockquote>

"java.lang.String"
              "javax.swing.JSpinner$DefaultEditor"
              "java.security.KeyStore$Builder$FileBuilder$1"
              "java.net.URLClassLoader$3$1"

</Blockquote>

In 1.0 hinzugefügt.

Java-Dokumentation für java.lang.ClassLoader.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

ClassLoader()

Erstellt ein neues Klassenladeprogramm unter Verwendung des ClassLoader von der -Methode #getSystemClassLoader() <tt>getSystemClassLoader()</tt> zurückgegebenen als übergeordnetes Klassenladeprogramm.

ClassLoader(ClassLoader)

Erstellt einen neuen Klassenladeprogramm mit dem angegebenen übergeordneten Klassenladeprogramm für die Delegierung.

ClassLoader(IntPtr, JniHandleOwnership)

Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Runtime aufgerufen.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Objectzurück.

(Geerbt von Object)
Handle

Das Handle zum zugrunde liegenden Android-instance.

(Geerbt von Object)
JniIdentityHashCode

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
JniPeerMembers

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

Parent

Gibt den übergeordneten Klassenladevorgang für die Delegierung zurück.

PeerReference

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
SystemClassLoader

Gibt das Systemklassenladeprogramm für die Delegierung zurück.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

Methoden

ClearAssertionStatus()

Legt die Standardassertion status für dieses Klassenladeprogramm auf false fest und verwirft alle Paketstandardeinstellungen oder Klassenassertionen status Einstellungen, die dem Klassenladeprogramm zugeordnet sind.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
DefineClass(Byte[], Int32, Int32)
Veraltet.

Konvertiert ein Array von Bytes in ein instance der Klasse Class.

DefineClass(String, Byte[], Int32, Int32)

Konvertiert ein Array von Bytes in ein instance der Klasse Class.

DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)

Konvertiert ein Array von Bytes in ein instance der -Klasse Classmit optionalem ProtectionDomain.

DefineClass(String, ByteBuffer, ProtectionDomain)

Konvertiert eine java.nio.ByteBuffer <tt>ByteBuffer</tt> in einen instance der -Klasse Classmit optionalem ProtectionDomain.

DefinePackage(String, String, String, String, String, String, String, URL)

Definiert ein Paket anhand des Namens in diesem ClassLoader.

Dispose()

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
Dispose(Boolean)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
Equals(Object)

Gibt an, ob ein anderes Objekt diesem "gleich" ist.

(Geerbt von Object)
FindClass(String)

Sucht die Klasse mit dem angegebenen Binärnamen.

FindLibrary(String)

Gibt den absoluten Pfadnamen einer nativen Bibliothek zurück.

FindLoadedClass(String)

Gibt die Klasse mit dem angegebenen binären Namen zurück, wenn dieser Ladevorgang vom virtuellen Java-Computer als initiierendes Ladeprogramm einer Klasse mit diesem binären Namen aufgezeichnet wurde.

FindResource(String)

Sucht die Ressource mit dem angegebenen Namen.

FindResources(String)

Gibt eine Enumeration von java.net.URL <tt>URL</tt> Objekten zurück, die alle Ressourcen mit dem angegebenen Namen darstellen.

FindSystemClass(String)

Sucht eine Klasse mit dem angegebenen Binärnamen und lädt sie bei Bedarf.

GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
GetPackage(String)

Gibt einen Package zurück, der von diesem Klassenladeprogramm oder einem seiner Vorgänger definiert wurde.

GetPackages()

Gibt alle Packages von diesem Klassenladeprogramm definierten Elemente und seine Vorgänger zurück.

GetResource(String)

Sucht die Ressource mit dem angegebenen Namen.

GetResourceAsStream(String)

Gibt einen Eingabestream zum Lesen der angegebenen Ressource zurück.

GetResources(String)

Sucht alle Ressourcen mit dem angegebenen Namen.

GetSystemResource(String)

Suchen Sie eine Ressource mit dem angegebenen Namen aus dem Suchpfad, der zum Laden von Klassen verwendet wird.

GetSystemResourceAsStream(String)

Zum Lesen geöffnet, eine Ressource mit dem angegebenen Namen aus dem Suchpfad, der zum Laden von Klassen verwendet wird.

GetSystemResources(String)

Sucht alle Ressourcen des angegebenen Namens aus dem Suchpfad, der zum Laden von Klassen verwendet wird.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr auf das Objekt vorhanden sind.

(Geerbt von Object)
LoadClass(String)

Lädt die Klasse mit dem angegebenen Binärnamen.

LoadClass(String, Boolean)

Lädt die Klasse mit dem angegebenen Binärnamen.

LoadClassAsync(String)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

LoadClassAsync(String, Boolean)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
RegisterAsParallelCapable()

Registriert den Aufrufer als parallelfähig.

ResolveClass(Class)

Verknüpft die angegebene Klasse.

SetClassAssertionStatus(String, Boolean)

Legt die gewünschte Assertion status für die benannte Klasse der obersten Ebene in diesem Klassenladeprogramm und alle darin enthaltenen geschachtelten Klassen fest.

SetDefaultAssertionStatus(Boolean)

Legt die Standardassertion status für dieses Klassenladeprogramm fest.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetPackageAssertionStatus(String, Boolean)

Legt die Standardassertion des Pakets status für das benannte Paket fest.

SetSigners(Class, Object[])

Legt die Signierer einer Klasse fest.

ToArray<T>()

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel durch em benachrichtigen/em> oder <em>interrupted</em>.<><

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
IJavaPeerable.Finalized()

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine Für Android-Runtime überprüfte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

GetJniTypeName(IJavaPeerable)

Ein Klassenladeprogramm ist ein Objekt, das für das Laden von Klassen verantwortlich ist.

Gilt für: