Langage

ClassLoader Classe

Définition

Un chargeur de classes est un objet responsable du chargement des classes.

[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
Héritage
ClassLoader
Dérivé
Attributs

Remarques

Un chargeur de classes est un objet responsable du chargement des classes. La classe est une classe ClassLoader abstraite. Étant donné le nom binaire d’une classe, un chargeur de classes doit tenter de localiser ou de générer des données qui constituent une définition pour la classe. Une stratégie classique consiste à transformer le nom en nom de fichier, puis à lire un « fichier de classe » de ce nom à partir d’un système de fichiers.

Chaque java.lang.Class Class objet contient un Class#getClassLoader() reference objet qui l’a ClassLoader défini.

Classles objets pour les classes de tableau ne sont pas créés par les chargeurs de classes, mais sont créés automatiquement comme requis par le runtime Java. Le chargeur de classes pour une classe de tableau, tel qu’il est retourné par Class#getClassLoader() est le même que le chargeur de classes pour son type d’élément ; si le type d’élément est un type primitif, la classe de tableau n’a pas de chargeur de classe.

Les applications implémentent des sous-classes pour ClassLoader étendre la manière dont la machine virtuelle Java charge dynamiquement les classes.

Les chargeurs de classes peuvent généralement être utilisés par les gestionnaires de sécurité pour indiquer des domaines de sécurité.

Outre le chargement de classes, un chargeur de classes est également responsable de la localisation des ressources. Une ressource est une ressource (un fichier «.class », des données de configuration ou une image par exemple) identifiées avec un nom de chemin d’accès abstrait « / ». Les ressources sont généralement empaquetées avec une application ou une bibliothèque afin qu’elles puissent être situées par code dans l’application ou la bibliothèque. Dans certains cas, les ressources sont incluses afin qu’elles puissent être localisées par d’autres bibliothèques.

La ClassLoader classe utilise un modèle de délégation pour rechercher des classes et des ressources. Chaque instance d’un chargeur de ClassLoader classe parent associé. Lorsqu’elle est demandée pour rechercher une classe ou une ressource, une ClassLoader instance délègue généralement la recherche de la classe ou de la ressource à son chargeur de classes parent avant de tenter de trouver la classe ou la ressource elle-même.

Les chargeurs de classes qui prennent en charge le chargement simultané de classes sont appelés <chargeurs de classes em>#isRegisteredAsParallelCapable() parallel capable</em> et doivent s’inscrire à leur heure d’initialisation de classe en appelant la #registerAsParallelCapable ClassLoader.registerAsParallelCapable méthode. Notez que la ClassLoader classe est inscrite en tant que capacité parallèle par défaut. Toutefois, ses sous-classes doivent toujours s’inscrire s’ils sont en mesure d’être parallèles. Dans les environnements dans lesquels le modèle de délégation n’est pas strictement hiérarchique, les chargeurs de classes doivent être compatibles parallèlement, sinon le chargement de classes peut entraîner des blocages, car le verrou du chargeur est conservé pendant la durée du processus de chargement de classe (voir #loadClass loadClass les méthodes).

<h2> « builtinLoaders">Run-time Built-in Class Loaders</h2>

Le Java runtime a les chargeurs de classes intégrés suivants :

<ul><li>

Chargeur de classe Bootstrap. Il s’agit du chargeur de classes intégré de la machine virtuelle, généralement représenté comme null, et n’a pas de parent.</li li><>

chargeur de classe système #getSystemClassLoader(). Il est également appelé <>chargeur< de classe d’application em> et est distinct du chargeur de classe de plateforme. Le chargeur de classes système est généralement utilisé pour définir des classes sur le chemin de la classe d’application, le chemin d’accès du module et les outils spécifiques à JDK. Le chargeur de classe de plateforme est le parent ou un ancêtre du chargeur de classe système, de sorte que le chargeur de classe système peut charger des classes de plateforme en déléguant à son parent.</li></ul>

Normalement, la machine virtuelle Java charge les classes à partir du système de fichiers local de manière dépendante de la plateforme. Toutefois, certaines classes peuvent ne pas provenir d’un fichier ; ils peuvent provenir d’autres sources, telles que le réseau, ou ils peuvent être construits par une application. La méthode #defineClass(String, byte[], int, int) defineClass convertit un tableau d’octets en une instance de classe Class. Les instances de cette classe nouvellement définie peuvent être créées à l’aide Class#newInstance Class.newInstancede .

Les méthodes et les constructeurs d’objets créés par un chargeur de classes peuvent référencer d’autres classes. Pour déterminer la ou les classes référencées, la machine virtuelle Java appelle la #loadClass loadClass méthode du chargeur de classes qui a créé la classe à l’origine.

Par exemple, une application peut créer un chargeur de classes réseau pour télécharger des fichiers de classe à partir d’un serveur. L’exemple de code peut ressembler à ceci :

<blockquote>

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

</blockquote>

La sous-classe du chargeur de classe réseau doit définir les méthodes #findClass findClass et loadClassData charger une classe à partir du réseau. Une fois qu’il a téléchargé les octets qui composent la classe, il doit utiliser la méthode #defineClass defineClass pour créer une instance de classe. Un exemple d’implémentation est :

<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> « binary-name">Binary names</h3>

Tout nom de classe fourni en tant que String paramètre pour les méthodes doit ClassLoader être un nom binaire tel que défini par <la citation>La spécification</cite> du langage Java.

Voici quelques exemples de noms de classes valides : <blockquote>

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

</blockquote>

Tout nom de package fourni en tant que String paramètre pour les méthodes doit ClassLoader être la chaîne vide (indiquant un package sans nom) ou un nom complet tel qu’il est défini par <cite>The Java Language Specification</cite>.

Ajouté dans la version 1.0.

Java documentation pour java.lang.ClassLoader.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Constructeurs

Nom Description
ClassLoader()

Crée un chargeur de classes à l’aide de la ClassLoader méthode #getSystemClassLoader() getSystemClassLoader() retournée en tant que chargeur de classe parent.

ClassLoader(ClassLoader)

Crée un chargeur de classes à l’aide du chargeur de classes parent spécifié pour la délégation.

ClassLoader(IntPtr, JniHandleOwnership)

Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime.

Propriétés

Nom Description
Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité.

(Hérité de Object)
JniManagedPeerState

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
JniPeerMembers

Obtient les métadonnées JNI utilisées pour appeler les membres de cet homologue Java.

Parent

Retourne le chargeur de classe parent pour la délégation.

PeerReference

Obtient la référence d’objet JNI pour cet homologue Java.

(Hérité de Object)
SystemClassLoader

Retourne le chargeur de classe système.

ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

Méthodes

Nom Description
ClearAssertionStatus()

Définit l’état d’assertion par défaut pour ce chargeur false de classe et ignore tous les paramètres d’état d’assertion de package ou d’assertion de classe associés au chargeur de classes.

Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
DefineClass(Byte[], Int32, Int32)
Obsolète.

Convertit un tableau d’octets en une instance de classe Class.

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

Convertit un tableau d’octets en une instance de classe Class, avec un nombre donné ProtectionDomain.

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

Convertit un tableau d’octets en une instance de classe Class.

DefineClass(String, ByteBuffer, ProtectionDomain)

Convertit une java.nio.ByteBuffer ByteBuffer instance de classe en une instance de classe Class, avec la valeur donnée ProtectionDomain.

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

Définit un package par nom dans cet objet ClassLoader.

Dispose()

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
Dispose(Boolean)

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
DisposeUnlessReferenced()

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
Equals(Object)

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
FindClass(String)

Recherche la classe avec le nom binaire spécifié.

FindLibrary(String)

Retourne le nom absolu du chemin d’accès d’une bibliothèque native.

FindLoadedClass(String)

Retourne la classe avec le nom binaire donné si ce chargeur a été enregistré par la machine virtuelle Java en tant que chargeur de lancement d’une classe portant ce nom binaire.

FindResource(String)

Recherche la ressource avec le nom donné.

FindResources(String)

Retourne une énumération d’objets java.net.URL URL représentant toutes les ressources portant le nom donné.

FindSystemClass(String)

Recherche une classe avec le nom binaire spécifié, le chargeant si nécessaire.

GetHashCode()

Retourne une valeur de code de hachage pour l’objet.

(Hérité de Object)
GetPackage(String)

Recherche un package par nom dans ce chargeur de classe et ses ancêtres.

GetPackages()

Retourne tous les Packages qui ont été définis par ce chargeur de classe et ses ancêtres.

GetResource(String)

Recherche la ressource avec le nom donné.

GetResourceAsStream(String)

Retourne un flux d’entrée pour lire la ressource spécifiée.

GetResources(String)

Recherche toutes les ressources portant le nom donné.

GetSystemResource(String)

Recherchez une ressource du nom spécifié à partir du chemin de recherche utilisé pour charger des classes.

GetSystemResourceAsStream(String)

Ouvrez pour la lecture, ressource du nom spécifié à partir du chemin de recherche utilisé pour charger des classes.

GetSystemResources(String)

Recherche toutes les ressources du nom spécifié à partir du chemin de recherche utilisé pour charger des classes.

JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
LoadClass(String, Boolean)

Charge la classe avec le nom binaire spécifié.

LoadClass(String)

Charge la classe avec le nom binaire spécifié.

LoadClassAsync(String, Boolean)

Charge de façon asynchrone la classe avec le nom spécifié.

LoadClassAsync(String)

Charge de façon asynchrone la classe avec le nom spécifié.

Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
RegisterAsParallelCapable()

Inscrit l’appelant en tant que #isRegisteredAsParallelCapable() parallel capable.

ResolveClass(Class)

Lie la classe spécifiée.

SetClassAssertionStatus(String, Boolean)

Définit l’état d’assertion souhaité pour la classe de niveau supérieur nommée dans ce chargeur de classe et toutes les classes imbriquées contenues dans cette classe.

SetDefaultAssertionStatus(Boolean)

Définit l’état d’assertion par défaut pour ce chargeur de classe.

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetPackageAssertionStatus(String, Boolean)

Définit l’état d’assertion par défaut du package nommé.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
SetSigners(Class, Object[])

Définit les signataires d’une classe.

ToArray<T>()

Crée un tableau managé à partir de ce wrapper de tableau Java.

(Hérité de Object)
ToString()

Retourne une représentation sous forme de chaîne de l’objet.

(Hérité de Object)
UnregisterFromRuntime()

Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
IJavaPeerable.Disposed()

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
IJavaPeerable.Finalized()

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Un chargeur de classes est un objet responsable du chargement des classes.

(Hérité de JavaObject)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Un chargeur de classes est un objet responsable du chargement des classes.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à