Внутренний класс
Класс A {// inner1 может использоваться только после инициализированного A, то есть его следует вызывать объектом A. Class inner1 {int k = 0; // static int j = 0; // После загрузки a inner1 не загружается, поэтому эта статическая переменная j не может быть использована немедленно, а ошибка сообщается о конечной int z = 0; /*static void spee1 () {}*/void sehip2 () {}} // inner2 может использовать статический класс inner2 {int k = 0; статический int j = 0; окончательный int z = 0; static void spee1 () {} void spee2 () {}} // Вызов внутреннего класса void c () {final int x = 0; // после окончательного изменения, новый a (). new inner1 (); // нестатический внутренний класс inner1, необходимо назвать объект класса, который он принадлежит новому a (). A.inner2.say1 (); new a.inner2 (). say2 (); // нестатический метод sehip2 () требует называть объект класса, который он принадлежит классу inner3 {void print () {System.out.println (x); }} / * * Призыв к локальному внутреннему классу в методе должен быть объявлен после объявления, * Порядок выполнения в методе находится сверху вниз, и этот класс * эквивалентен локальной переменной, конечно, вы должны сначала объявить ее, а затем использовать * / nenner3 (). Print (); }} Загрузчик класса java.lang.classloader
Основная ответственность класса java.lang.classloader состоит в том, чтобы найти или генерировать соответствующий байтовый код на основе имени указанного класса, а затем определить класс Java из этих байтовых кодов, то есть экземпляр класса Java.lang.class. Кроме того, ClassLoader также отвечает за загрузку ресурсов, требуемых приложениями Java, таких как файлы изображений и файлы конфигурации. Тем не менее, в этой статье обсуждается только функция своего класса загрузки. Чтобы выполнить эту ответственность за загрузку классов, ClassLoader предоставляет ряд методов:
getParent () возвращает родительский загрузчик класса загрузчика класса.
LoadClass (String name) загружает класс с именем именем, а возвратный результат является экземпляром класса Java.lang.class.
FindClass (String name) ищет класс с именем именем, а возвратный результат является экземпляром класса Java.lang.class.
FindLoadedClass (String name) ищет загруженное имя класса с именем, а возвратный результат является экземпляром класса Java.lang.class.
DecianceClass (String name, Byte [] b, int off, int len) преобразует содержимое в массиве Byte B в класс Java, а возвращенный результат является экземпляром класса Java.lang.class. Этот метод объявлен окончательным.
ResolVeclass (Class <?> C) Связывает указанный класс Java.
public class classloadertest extends classloader {public static void main (string [] args) выбрасывает SecurityException, nosuchmethodexception {// root class loader, загруженная библиотека класса Core [] urls = sun.misc.launcher.getBootStrapClassPath (). getUrls (); для (url u: urls) {System.out.println (u); } // Расширенный загрузчик класса ,, загруженные свойства системы: класс под пути, возвращаемый java.ext.dirs System.err.println ("Extension ClassLoader) Loader" + ClassLoader.getSystemClassloader (). GetParent ()); // Не унаследованные отношения, это просто это только System.out.println (System.getProperty ("java.ext.dirs")); // Приложение (системное приложение ClassLoader) Загрузчик класса, загрузка системы переменной среды или ClassPath // Указанный пакет JAR и ClassPath System.err.println ("Application (System) Class Loader" + ClassLoader.getSyStemClassLoader ()); // System.out.println (System.getEnv ("path")); // System.out.println (System.getEnv ("classPath")); }}