ClassLoader Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas.
[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
- Warisan
- Turunan
- Atribut
Keterangan
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas.
ClassLoader Kelas ini adalah kelas abstrak. Mengingat nama biner kelas, pemuat kelas harus mencoba menemukan atau menghasilkan data yang merupakan definisi untuk kelas . Strategi umumnya adalah mengubah nama menjadi nama file dan kemudian membaca "file kelas" dari nama itu dari sistem file.
Setiap java.lang.Class Class objek berisi Class#getClassLoader() reference ke ClassLoader yang mendefinisikannya.
Classobjek untuk kelas array tidak dibuat oleh pemuat kelas, tetapi dibuat secara otomatis seperti yang diperlukan oleh runtime Java. Loader kelas untuk kelas array, seperti yang dikembalikan oleh sama dengan Class#getClassLoader() loader kelas untuk jenis elemennya; jika jenis elemen adalah jenis primitif, maka kelas array tidak memiliki pemuat kelas.
Aplikasi menerapkan subkelas ClassLoader untuk memperluas cara komputer virtual Java memuat kelas secara dinamis.
Pemuat kelas biasanya dapat digunakan oleh manajer keamanan untuk menunjukkan domain keamanan.
Selain memuat kelas, pemuat kelas juga bertanggung jawab untuk menemukan sumber daya. Sumber daya adalah beberapa data (file ".class", data konfigurasi, atau gambar misalnya) yang diidentifikasi dengan nama jalur abstrak '/'yang dipisahkan. Sumber daya biasanya dipaketkan dengan aplikasi atau pustaka sehingga dapat ditemukan berdasarkan kode di aplikasi atau pustaka. Dalam beberapa kasus, sumber daya disertakan sehingga dapat ditemukan oleh pustaka lain.
Kelas ClassLoader menggunakan model delegasi untuk mencari kelas dan sumber daya. Setiap instans ClassLoader memiliki loader kelas induk terkait. Ketika diminta untuk menemukan kelas atau sumber daya, ClassLoader instans biasanya akan mendelegasikan pencarian untuk kelas atau sumber daya ke loader kelas induknya sebelum mencoba menemukan kelas atau sumber daya itu sendiri.
Loader kelas yang mendukung pemuatan kelas secara bersamaan dikenal sebagai <loader kelas em>#isRegisteredAsParallelCapable() parallel capable</em> dan diharuskan untuk mendaftarkan diri pada waktu inisialisasi kelas mereka dengan memanggil #registerAsParallelCapable ClassLoader.registerAsParallelCapable metode . Perhatikan bahwa ClassLoader kelas terdaftar sebagai kemampuan paralel secara default. Namun, subkelasnya masih perlu mendaftarkan diri jika mereka mampu paralel. Di lingkungan di mana model delegasi tidak secara ketat hierarkis, loader kelas harus berkemampuan paralel, jika tidak, pemuatan kelas dapat menyebabkan kebuntuan karena kunci pemuat ditahan selama durasi proses pemuatan kelas (lihat #loadClass loadClass metode).
<h2> "builtinLoaders">Run-time Built-in Class Loaders</h2>
Run-time Java memiliki pemuat kelas bawaan berikut:
<ul><li>
Loader kelas bootstrap. Ini adalah loader kelas bawaan komputer virtual, biasanya diwakili sebagai null, dan tidak memiliki induk.</li><li>
#getSystemClassLoader() Pemuat kelas sistem. Ini juga dikenal sebagai <loader>/em< kelas aplikasi em>dan berbeda dari loader kelas platform. Pemuat kelas sistem biasanya digunakan untuk menentukan kelas pada jalur kelas aplikasi, jalur modul, dan alat khusus JDK. Loader kelas platform adalah induk atau nenek moyang pemuat kelas sistem, sehingga pemuat kelas sistem dapat memuat kelas platform dengan mendelegasikan ke induknya.</li></ul>
Biasanya, komputer virtual Java memuat kelas dari sistem file lokal dengan cara yang bergantung pada platform. Namun, beberapa kelas mungkin tidak berasal dari file; mereka mungkin berasal dari sumber lain, seperti jaringan, atau dapat dibangun oleh aplikasi. Metode #defineClass(String, byte[], int, int) defineClass ini mengonversi array byte menjadi instans kelas Class. Instans kelas yang baru ditentukan ini dapat dibuat menggunakan Class#newInstance Class.newInstance.
Metode dan konstruktor objek yang dibuat oleh pemuat kelas dapat mereferensikan kelas lain. Untuk menentukan kelas yang dimaksud, komputer virtual Java memanggil #loadClass loadClass metode pemuat kelas yang awalnya membuat kelas.
Misalnya, aplikasi dapat membuat loader kelas jaringan untuk mengunduh file kelas dari server. Kode sampel mungkin terlihat seperti:
<blockquote>
ClassLoader loader = new NetworkClassLoader(host, port);
Object main = loader.loadClass("Main", true).newInstance();
. . .
</blockquote>
Subkelas pemuat kelas jaringan harus menentukan metode #findClass findClass dan loadClassData memuat kelas dari jaringan. Setelah mengunduh byte yang membentuk kelas , itu harus menggunakan metode #defineClass defineClass untuk membuat instans kelas. Implementasi sampel adalah:
<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> "binary-name">Nama< biner/h3>
Nama kelas apa pun yang String disediakan sebagai parameter untuk metode harus ClassLoader berupa nama biner seperti yang didefinisikan oleh <kutipan>Spesifikasi/kutipan<> Bahasa Java.
Contoh nama kelas yang valid meliputi: <blockquote>
"java.lang.String"
"javax.swing.JSpinner$DefaultEditor"
"java.security.KeyStore$Builder$FileBuilder$1"
"java.net.URLClassLoader$3$1"
</blockquote>
Nama paket apa pun yang String disediakan sebagai parameter untuk metode harus ClassLoader berupa string kosong (menunjukkan paket yang tidak disebutkan namanya) atau nama yang sepenuhnya memenuhi syarat seperti yang didefinisikan oleh <kutipan>Spesifikasi/kutipan<> Bahasa Java.
Ditambahkan dalam 1.0.
Java dokumentasi untuk java.lang.ClassLoader.
Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.
Konstruktor
| Nama | Deskripsi |
|---|---|
| ClassLoader() |
Membuat pemuat kelas baru menggunakan yang |
| ClassLoader(ClassLoader) |
Membuat pemuat kelas baru menggunakan loader kelas induk yang ditentukan untuk delegasi. |
| ClassLoader(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
Properti
| Nama | Deskripsi |
|---|---|
| Class |
Mengembalikan kelas runtime dari . |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| JniIdentityHashCode |
Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop. (Diperoleh dari Object) |
| JniManagedPeerState |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| JniPeerMembers |
Mendapatkan metadata JNI yang digunakan untuk memanggil anggota peer Java ini. |
| Parent |
Mengembalikan loader kelas induk untuk delegasi. |
| PeerReference |
Mendapatkan referensi objek JNI untuk peer Java ini. (Diperoleh dari Object) |
| SystemClassLoader |
Mengembalikan loader kelas sistem. |
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
Metode
| Nama | Deskripsi |
|---|---|
| ClearAssertionStatus() |
Mengatur status pernyataan default untuk pemuat kelas ini ke |
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| DefineClass(Byte[], Int32, Int32) |
Kedaluwarsa.
Mengonversi array byte menjadi instans kelas |
| DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
Mengonversi array byte menjadi instans kelas |
| DefineClass(String, Byte[], Int32, Int32) |
Mengonversi array byte menjadi instans kelas |
| DefineClass(String, ByteBuffer, ProtectionDomain) |
Mengonversi menjadi |
| DefinePackage(String, String, String, String, String, String, String, URL) |
Mendefinisikan paket menurut nama dalam ini |
| Dispose() |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| Dispose(Boolean) |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| DisposeUnlessReferenced() |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| Equals(Object) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| FindClass(String) |
Menemukan kelas dengan nama biner yang ditentukan. |
| FindLibrary(String) |
Mengembalikan nama jalur absolut pustaka asli. |
| FindLoadedClass(String) |
Mengembalikan kelas dengan nama biner yang diberikan jika pemuat ini telah direkam oleh komputer virtual Java sebagai pemuat yang memulai kelas dengan nama biner tersebut. |
| FindResource(String) |
Menemukan sumber daya dengan nama yang diberikan. |
| FindResources(String) |
Mengembalikan enumerasi |
| FindSystemClass(String) |
Menemukan kelas dengan nama biner yang ditentukan, memuatnya jika perlu. |
| GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
| GetPackage(String) |
Menemukan paket berdasarkan nama di loader kelas ini dan nenek moyangnya. |
| GetPackages() |
Mengembalikan semua |
| GetResource(String) |
Menemukan sumber daya dengan nama yang diberikan. |
| GetResourceAsStream(String) |
Mengembalikan aliran input untuk membaca sumber daya yang ditentukan. |
| GetResources(String) |
Menemukan semua sumber daya dengan nama yang diberikan. |
| GetSystemResource(String) |
Temukan sumber daya nama yang ditentukan dari jalur pencarian yang digunakan untuk memuat kelas. |
| GetSystemResourceAsStream(String) |
Buka untuk membaca, sumber daya nama yang ditentukan dari jalur pencarian yang digunakan untuk memuat kelas. |
| GetSystemResources(String) |
Menemukan semua sumber daya dari nama yang ditentukan dari jalur pencarian yang digunakan untuk memuat kelas. |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| LoadClass(String, Boolean) |
Memuat kelas dengan nama biner yang ditentukan. |
| LoadClass(String) |
Memuat kelas dengan nama biner yang ditentukan. |
| LoadClassAsync(String, Boolean) |
Secara asinkron memuat kelas dengan nama yang ditentukan. |
| LoadClassAsync(String) |
Secara asinkron memuat kelas dengan nama yang ditentukan. |
| Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| RegisterAsParallelCapable() |
Mendaftarkan pemanggil sebagai |
| ResolveClass(Class) |
Menautkan kelas yang ditentukan. |
| SetClassAssertionStatus(String, Boolean) |
Mengatur status pernyataan yang diinginkan untuk kelas tingkat atas bernama di loader kelas ini dan kelas berlapis apa pun yang terkandung di dalamnya. |
| SetDefaultAssertionStatus(Boolean) |
Mengatur status pernyataan default untuk pemuat kelas ini. |
| SetHandle(IntPtr, JniHandleOwnership) |
Mengatur properti Handle. (Diperoleh dari Object) |
| SetPackageAssertionStatus(String, Boolean) |
Mengatur status pernyataan default paket untuk paket bernama. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| SetSigners(Class, Object[]) |
Mengatur penanda tangan kelas. |
| ToArray<T>() |
Membuat array terkelola dari pembungkus array Java ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| UnregisterFromRuntime() |
Membatalkan pendaftaran peer Java ini dari runtime interop. (Diperoleh dari Object) |
| Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
| Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IJavaPeerable.Disposed() |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| IJavaPeerable.Finalized() |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. (Diperoleh dari JavaObject) |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Mendapatkan nama JNI dari jenis instans |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Loader kelas adalah objek yang bertanggung jawab untuk memuat kelas. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |