Share via


ClassLoader Classe

Definizione

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

[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
Ereditarietà
ClassLoader
Derivato
Attributi

Commenti

Un caricatore di classi è un oggetto responsabile del caricamento delle classi. La classe ClassLoader è una classe astratta. Dato il nome binario di una classe, un caricatore di classi deve tentare di individuare o generare dati che costituiscono una definizione per la classe . Una strategia tipica consiste nel trasformare il nome in un nome di file e quindi leggere un "file di classe" di tale nome da un file system.

Ogni Class <tt>Class</tt> oggetto contiene un Class#getClassLoader() reference oggetto all'oggetto ClassLoader che lo ha definito.

Class gli oggetti per le classi di matrice non vengono creati dai caricatori di classi, ma vengono creati automaticamente come richiesto dal runtime Java. Il caricatore di classi per una classe di matrice, come restituito da Class#getClassLoader() , corrisponde al caricatore di classi per il tipo di elemento. Se il tipo di elemento è un tipo primitivo, la classe di matrice non ha alcun caricatore di classi.

Le applicazioni implementano sottoclassi di ClassLoader per estendere il modo in cui la macchina virtuale Java carica dinamicamente le classi.

I caricatori di classe possono in genere essere usati dai responsabili della sicurezza per indicare i domini di sicurezza.

La ClassLoader classe usa un modello di delega per cercare classi e risorse. Ogni istanza di ClassLoader ha un caricatore della classe padre associato. Quando richiesto di trovare una classe o una risorsa, un'istanza ClassLoader delega la ricerca della classe o della risorsa al caricatore della classe padre prima di tentare di trovare la classe o la risorsa stessa. Il caricatore di classe predefinito della macchina virtuale, denominato "caricatore della classe bootstrap", non ha un padre, ma può fungere da padre di un'istanza ClassLoader .

I caricatori di classe che supportano il caricamento simultaneo delle classi sono noti come <caricatori>di classi con supporto< em paralleli/em> e devono registrarsi al momento dell'inizializzazione della classe richiamando il #registerAsParallelCapable <tt>ClassLoader.registerAsParallelCapable</tt> metodo . Si noti che la ClassLoader classe è registrata come parallela in grado di supportare per impostazione predefinita. Tuttavia, le relative sottoclassi devono comunque registrarsi se sono in grado di funzionare in parallelo. <br> Negli ambienti in cui il modello di delega non è strettamente gerarchico, i caricatori di classe devono essere in grado di essere paralleli. In caso contrario, il caricamento delle classi può causare deadlock perché il blocco del caricatore viene mantenuto per la durata del processo di caricamento della classe (vedere #loadClass <tt>loadClass</tt> i metodi).

In genere, la macchina virtuale Java carica le classi dal file system locale in modo dipendente dalla piattaforma. Ad esempio, nei sistemi UNIX, la macchina virtuale carica le classi dalla directory definita dalla CLASSPATH variabile di ambiente.

Tuttavia, alcune classi potrebbero non provenire da un file; possono provenire da altre origini, ad esempio la rete, o possono essere costruite da un'applicazione. Il metodo #defineClass(String, byte[], int, int) <tt>defineClass</tt> converte una matrice di byte in un'istanza della classe Class. È possibile creare istanze di questa classe appena definita usando Class#newInstance <tt>Class.newInstance</tt>.

I metodi e i costruttori di oggetti creati da un caricatore di classi possono fare riferimento ad altre classi. Per determinare la classe (es) a cui si fa riferimento, la macchina virtuale Java richiama il #loadClass <tt>loadClass</tt> metodo del caricatore di classe che ha originariamente creato la classe .

Ad esempio, un'applicazione può creare un caricatore di classi di rete per scaricare i file di classe da un server. Il codice di esempio potrebbe essere simile al seguente:

<Blockquote>

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

</Blockquote>

La sottoclasse del caricatore della classe di rete deve definire i metodi #findClass <tt>findClass</tt> e loadClassData caricare una classe dalla rete. Dopo aver scaricato i byte che costituiscono la classe, deve usare il metodo #defineClass <tt>defineClass</tt> per creare un'istanza di classe. Un'implementazione di esempio è:

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

Qualsiasi nome di classe fornito come String parametro per i metodi in ClassLoader deve essere un nome binario come definito da <cite>The Java™ Specifica< del linguaggio/cite>.

Esempi di nomi di classi validi includono: <blockquote>

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

</Blockquote>

Aggiunta nella versione 1.0.

Documentazione java per java.lang.ClassLoader.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Costruttori

ClassLoader()

Crea un nuovo caricatore di classi usando l'oggetto ClassLoader restituito dal metodo #getSystemClassLoader() <tt>getSystemClassLoader()</tt> come caricatore della classe padre.

ClassLoader(ClassLoader)

Crea un nuovo caricatore di classe usando il caricatore della classe padre specificato per la delega.

ClassLoader(IntPtr, JniHandleOwnership)

Costruttore utilizzato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

Proprietà

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
JniPeerMembers

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

Parent

Restituisce il caricatore della classe padre per la delega.

PeerReference

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
SystemClassLoader

Restituisce il caricatore della classe di sistema per la delega.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Metodi

ClearAssertionStatus()

Imposta lo stato predefinito dell'asserzione per questo caricatore false di classi su e rimuove le impostazioni predefinite del pacchetto o dello stato dell'asserzione di classe associate al caricatore di classe.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
DefineClass(Byte[], Int32, Int32)
Obsoleti.

Converte una matrice di byte in un'istanza della classe Class.

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

Converte una matrice di byte in un'istanza della classe Class.

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

Converte una matrice di byte in un'istanza della classe Class, con un oggetto facoltativo ProtectionDomain.

DefineClass(String, ByteBuffer, ProtectionDomain)

Converte un oggetto java.nio.ByteBuffer <tt>ByteBuffer</tt> in un'istanza della classe Class, con un oggetto facoltativo ProtectionDomain.

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

Definisce un pacchetto in base al nome in questo ClassLoaderoggetto .

Dispose()

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
Dispose(Boolean)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
FindClass(String)

Trova la classe con il nome binario specificato.

FindLibrary(String)

Restituisce il nome del percorso assoluto di una libreria nativa.

FindLoadedClass(String)

Restituisce la classe con il nome binario specificato se questo caricatore è stato registrato dalla macchina virtuale Java come caricatore iniziale di una classe con tale nome binario.

FindResource(String)

Trova la risorsa con il nome specificato.

FindResources(String)

Restituisce un'enumerazione di java.net.URL <tt>URL</tt> oggetti che rappresentano tutte le risorse con il nome specificato.

FindSystemClass(String)

Trova una classe con il nome binario specificato, caricandola se necessario.

GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
GetPackage(String)

Restituisce un oggetto Package definito da questo caricatore di classi o da uno dei relativi predecessori.

GetPackages()

Restituisce tutti gli elementi Packages definiti da questo caricatore di classi e dai relativi predecessori.

GetResource(String)

Trova la risorsa con il nome specificato.

GetResourceAsStream(String)

Restituisce un flusso di input per la lettura della risorsa specificata.

GetResources(String)

Trova tutte le risorse con il nome specificato.

GetSystemResource(String)

Trovare una risorsa del nome specificato dal percorso di ricerca usato per caricare le classi.

GetSystemResourceAsStream(String)

Aprire per la lettura, una risorsa del nome specificato dal percorso di ricerca usato per caricare le classi.

GetSystemResources(String)

Trova tutte le risorse del nome specificato dal percorso di ricerca usato per caricare le classi.

JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
LoadClass(String)

Carica la classe con il nome binario specificato.

LoadClass(String, Boolean)

Carica la classe con il nome binario specificato.

LoadClassAsync(String)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

LoadClassAsync(String, Boolean)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio di questo oggetto.

(Ereditato da Object)
RegisterAsParallelCapable()

Registra il chiamante come in grado di supportare in parallelo.

ResolveClass(Class)

Collega la classe specificata.

SetClassAssertionStatus(String, Boolean)

Imposta lo stato dell'asserzione desiderato per la classe di primo livello denominata in questo caricatore di classe e per tutte le classi nidificate in esso contenute.

SetDefaultAssertionStatus(Boolean)

Imposta lo stato predefinito dell'asserzione per questo caricatore di classi.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetPackageAssertionStatus(String, Boolean)

Imposta lo stato predefinito dell'asserzione del pacchetto per il pacchetto denominato.

SetSigners(Class, Object[])

Imposta i firmatari di una classe.

ToArray<T>()

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una>notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
IJavaPeerable.Finalized()

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

GetJniTypeName(IJavaPeerable)

Un caricatore di classi è un oggetto responsabile del caricamento delle classi.

Si applica a