ClassLoader Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 = new NetworkClassLoader(host, port);
Object main = loader.loadClass("Main", true).newInstance();
. . .
</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
. . .
}
}
</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(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 |
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 |
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 |
DefineClass(String, Byte[], Int32, Int32) |
Converte una matrice di byte in un'istanza della classe |
DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
Converte una matrice di byte in un'istanza della classe |
DefineClass(String, ByteBuffer, ProtectionDomain) |
Converte un oggetto |
DefinePackage(String, String, String, String, String, String, String, URL) |
Definisce un pacchetto in base al nome in questo |
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 |
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 |
GetPackages() |
Restituisce tutti gli elementi |
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. |