Kelas internal
Kelas A {// Inner1 hanya dapat digunakan setelah A diinisialisasi, yaitu, itu harus dipanggil oleh objek A. Kelas dalam1 {int k = 0; // static int j = 0; // Setelah A dimuat, bagian dalam1 tidak dimuat, jadi variabel statis ini tidak dapat digunakan segera, dan kesalahan dilaporkan int z = 0; /*static void mengatakan1 () {}*/void mengatakan () {}} // Inner2 dapat menggunakan kelas statis dalam2 {int k = 0; statis int j = 0; final int z = 0; static void mengatakan1 () {} void mengatakan2 () {}} // Memanggil kelas dalam void c () {final int x = 0; // Setelah modifikasi akhir, baru a (). New Inner1 (); // non-static class inner1, perlu memanggil objek kelas itu milik baru (). A.inner2.say1 (); baru a.inner2 (). say2 (); // metode non-statis mengatakan () perlu memanggil objek kelas yang dimiliki kelas dalam 3 {void print () {System.out.println (x); }} /? }} Kelas Loader Java.lang.Classloader
Tanggung jawab dasar kelas java.lang.classloader adalah untuk menemukan atau menghasilkan kode byte yang sesuai berdasarkan nama kelas yang ditentukan, dan kemudian mendefinisikan kelas Java dari kode byte ini, yaitu, contoh kelas java.lang.class. Selain itu, ClassLoader juga bertanggung jawab untuk memuat sumber daya yang diperlukan oleh aplikasi Java, seperti file gambar dan file konfigurasi. Namun, artikel ini hanya membahas fungsi kelas pemuatannya. Untuk menyelesaikan tanggung jawab kelas pemuatan ini, ClassLoader menyediakan serangkaian metode:
getParent () Mengembalikan loader kelas induk dari loader kelas.
LoadClass (String Name) Memuat kelas dengan nama nama, dan hasil yang dikembalikan adalah contoh dari kelas java.lang.class.
FindClass (String Name) Mencari nama kelas bernama, dan hasil yang dikembalikan adalah contoh dari kelas Java.lang.class.
findloadedclass (nama string) mencari kelas bernama yang dimuat, dan hasilnya yang dikembalikan adalah instance dari kelas java.lang.class.
Defineclass (nama string, byte [] b, int off, int len) mengubah konten dalam array byte b menjadi kelas java, dan hasil yang dikembalikan adalah contoh dari kelas java.lang.class. Metode ini dinyatakan final.
resolveclass (kelas <?> C) menghubungkan kelas Java yang ditentukan.
kelas publik ClassLoaderTest memperluas ClassLoader {public static void main (String [] args) melempar SecurityException, NosuchMethodeException {// root class loader, loaded core class library URL [] URLS = sun.misc.launcher.getbootstrapclasspath (). geturls ();;;; untuk (url u: url) {system.out.println (u); } // Loader kelas yang diperluas ,, Properti Sistem yang dimuat: Kelas di bawah jalur yang dikembalikan oleh java.ext.dirs system.err.println ("Extension ClassLoader) Loader" + classloader.getsystemclassLoader (). "GetParent ()); // Hubungan Notited, itu hanya System.out.println (). // Aplikasi (Sistem Aplikasi ClassLoader) Kelas Loader, Loading System Lingkungan Variabel Jalur atau classPath // Paket JAR yang ditentukan dan classpath system.err.println ("Aplikasi (Sistem) Loader Kelas" + classLoader.getSyStemClassLoader ()); // System.out.println (System.GetEnv ("Path")); // System.out.println (System.GetEnv ("ClassPath")); }}