Clase interna
La clase A {// inner1 solo se puede usar después de que A se inicialice, es decir, debe ser llamado por el objeto A. Clase Inner1 {int k = 0; // static int j = 0; // Después de que se carga A, Inner1 no se carga, por lo que esta variable estática J no se puede usar de inmediato, y se informa un error final int z = 0; /*static void says1 () {}*/void says2 () {}} // inner2 puede usar la clase static inner2 {int k = 0; static int j = 0; final int z = 0; static void says1 () {} void says2 () {}} // llamando a la clase interna void c () {final int x = 0; // Después de la modificación final, new A (). New Inner1 (); // Non-Static Inner Clase Inner1, necesita llamar al objeto de la clase que pertenece a New A (). New Inner1 (). Say2 (); A.inner2.say1 (); new A.inner2 (). Say2 (); // El método no estático dice2 () requiere llamar al objeto de la clase que pertenece a la clase interna3 {void print () {system.out.println (x); }} / * * La llamada de la clase interna local en el método debe declararse después de la declaración, * La orden de ejecución en el método es de arriba a abajo, y esta clase * es equivalente a una variable local, por supuesto, primero debe declararla, y luego usar * / new Inner3 ().); }} Class Loader java.lang.classloader
La responsabilidad básica de la clase Java.lang.ClassLoader es encontrar o generar el código de byte correspondiente basado en el nombre de una clase especificada, y luego definir una clase Java de estos códigos de bytes, es decir, una instancia de la clase java.lang.class. Además, ClassLoader también es responsable de la carga de los recursos requeridos por las aplicaciones Java, como archivos de imagen y archivos de configuración. Sin embargo, este artículo solo discute la función de su clase de carga. Para completar esta responsabilidad de cargar clases, ClassLoader proporciona una serie de métodos:
getParent () Devuelve el cargador de clase principal del cargador de clase.
LoadClass (nombre de cadena) carga la clase con el nombre del nombre, y el resultado devuelto es una instancia de la clase java.lang.class.
FindClass (nombre de cadena) busca un nombre de clase llamado, y el resultado devuelto es una instancia de la clase java.lang.class.
findloadedClass (nombre de cadena) busca una clase cargada con nombre de nombre, y el resultado devuelto es una instancia de la clase java.lang.class.
DefinClass (nombre de cadena, byte [] b, int off, int Len) convierte el contenido en la matriz de bytes B en una clase Java, y el resultado devuelto es una instancia de la clase java.lang.class. Este método se declara final.
resolveclass (clase <?> c) Enlaza la clase Java especificada.
public class ClassLoaderTest extiende ClassLoader {public static void main (string [] args) lanza SecurityException, nosuchmethodexception {// root class loader, la url de biblioteca de clase central cargada [] urls = sun.misc.launcher.getbootstrapClassPath (). getUrls ();; para (url u: urls) {system.out.println (u); } // Cargador de clase extendido, Propiedades del sistema cargadas: Clase en la ruta devuelta por java.ext.dirs System.err.println ("Extension ClassLoader) Loader" + ClassLoader.getSystemClassLoader (). GetParent ()); // Relación no heredada, es solo System.printlnn (System.getProperty ("JAVA.EXT); // Application (System Application ClassLoader) Class Loader, Cargando la ruta de variable de entorno del sistema o classpath // paquete jar especificado y classpath System.err.println ("Aplicación (Sistema) Cargador de clases" + ClassLoader.getSystemClassLoader ()); // System.out.println (System.getenv ("ruta")); // System.out.println (System.getenv ("classpath")); }}