Spec-Zone.ru › OpenJDK 17

Класс ClassLoader

java.lang.Object
java.lang.ClassLoader
Direct Known Subclasses:
SecureClassLoader
public abstract class ClassLoader extends Object
Класс загрузчик классов — объект, ответственный за загрузку классов. Класс ClassLoader является абстрактным классом. Учитывая бинарное имя класса, загрузчик классов должен попытаться найти или сгенерировать данные, составляющие определение класса. Типичная стратегия заключается в преобразовании имени в имя файла и чтении файла "class" с таким именем из файловой системы.

Каждый объект Class содержит ссылку на reference на загрузчик классов, который определил его.

Объекты для массивов не создаются загрузчиками классов, а создаются автоматически по мере необходимости во время выполнения Java. Загрузчик классов для массива, возвращаемый методом Class.getClassLoader(), совпадает с загрузчиком классов для его типа элементов; если тип элемента — примитивный тип, то у массива нет загрузчика классов.

Приложения реализуют подклассы ClassLoader для расширения способа динамической загрузки классов виртуальной машиной Java.

Загрузчики классов могут использоваться менеджерами безопасности для обозначения областей безопасности.

Помимо загрузки классов, загрузчик классов также отвечает за поиск ресурсов. Ресурс — это данные (например, файл ".class", конфигурационные данные или изображение), идентифицируемые абстрактным именем пути, разделенным символом '/'. Ресурсы обычно упаковываются с приложением или библиотекой, чтобы их можно было найти кодом в приложении или библиотеке. В некоторых случаях ресурсы включаются для того, чтобы их могли найти другие библиотеки.

Класс ClassLoader использует модель делегирования для поиска классов и ресурсов. У каждого экземпляра ClassLoader есть связанный родительский загрузчик классов. При запросе поиска класса или ресурса экземпляр ClassLoader обычно делегирует поиск родительскому загрузчику классов, прежде чем попытаться найти класс или ресурс самостоятельно.

Загрузчики классов, поддерживающие одновременную загрузку классов, известны как параллельные загрузчики классов и должны зарегистрировать себя во время инициализации класса, вызвав метод ClassLoader.registerAsParallelCapable. Обратите внимание, что класс ClassLoader по умолчанию зарегистрирован как параллельный. Однако его подклассы все равно должны зарегистрироваться, если они являются параллельными. В средах, где модель делегирования не является строго иерархической, загрузчики классов должны быть параллельными, в противном случае загрузка классов может привести к тупиковой ситуации, так как блокировка загрузчика удерживается в течение всего процесса загрузки класса (см. методы loadClass).

Встроенные загрузчики классов во время выполнения

Виртуальная машина Java имеет следующие встроенные загрузчики классов:
  • Загрузчик Bootstrap. Это встроенный загрузчик классов виртуальной машины, обычно представленный как null, и у него нет родителя.

  • Загрузчик платформенных классов. Загрузчик платформенных классов отвечает за загрузку платформенных классов. Платформенные классы включают API платформы Java SE, их классы реализации и специфичные для JDK классы времени выполнения, которые определяются загрузчиком платформенных классов или его предками. Загрузчик платформенных классов может использоваться в качестве родителя экземпляра ClassLoader.

    Чтобы разрешить обновление/переопределение модулей, определенных для загрузчика платформенных классов, и когда обновленные модули читают модули, определенные для загрузчиков классов, отличных от загрузчика платформенных классов и его предков, загрузчик платформенных классов может делегировать загрузку другим загрузчикам классов, например, загрузчику прикладных классов. Другими словами, классы в именованных модулях, определенных для загрузчиков классов, отличных от загрузчика платформенных классов и его предков, могут быть видны загрузчику платформенных классов.

  • Загрузчик системных классов. Также известен как загрузчик прикладных классов и отличается от загрузчика платформенных классов. Загрузчик системных классов обычно используется для определения классов в пути к приложению, пути к модулям и специфичных для JDK инструментах. Загрузчик платформенных классов является родителем или предком загрузчика системных классов, поэтому загрузчик системных классов может загружать платформенные классы, делегируя загрузку своему родителю.

Обычно виртуальная машина Java загружает классы из локальной файловой системы в зависимости от платформы. Однако некоторые классы могут не происходить из файла; они могут происходить из других источников, таких как сеть, или могут быть сконструированы приложением. Метод defineClass преобразует массив байтов в экземпляр класса Class. Экземпляры этого только что определенного класса могут быть созданы с помощью Class.newInstance.

Методы и конструкторы объектов, созданных загрузчиком классов, могут ссылаться на другие классы. Для определения ссылающихся классов виртуальная машина Java вызывает метод loadClass загрузчика классов, который изначально создал класс.

Например, приложение может создать загрузчик сетевых классов для загрузки файлов классов с сервера. Пример кода может выглядеть так:

   ClassLoader loader = new NetworkClassLoader(host, port);
   Object main = loader.loadClass("Main", true).newInstance();
        . . .
 

Подкласс загрузчика сетевых классов должен определить методы findClass и loadClassData для загрузки класса из сети. После загрузки байтов, составляющих класс, он должен использовать метод defineClass для создания экземпляра класса. Пример реализации:

     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
              . . .
         }
     }
 

Бинарные имена

Любое имя класса, предоставленное в качестве параметра String методам в ClassLoader, должно быть бинарным именем, как определено в Спецификации языка Java.

Примеры допустимых имен классов:

   "java.lang.String"
   "javax.swing.JSpinner$DefaultEditor"
   "java.security.KeyStore$Builder$FileBuilder$1"
   "java.net.URLClassLoader$3$1"
 

Любое имя пакета, предоставленное в качестве параметра String методам в ClassLoader, должно быть либо пустой строкой (обозначающей безымянный пакет), либо полным именем, как определено в Спецификации языка Java.

См. Спецификацию языка Java:
6.7 Полные квалифицированные имена
13.1 Формат бинарного файла
С:
1.0
См. также:
  • resolveClass(Class)

Краткое описание конструкторов

ClassLoader()
ClassLoader(ClassLoader parent)
ClassLoader(String name, ClassLoader parent)
Модификатор Конструктор Описание
protected
Создаёт новый загрузчик классов, используя загрузчик родительского класса, возвращённый методом getSystemClassLoader(), в качестве родительского.
protected
Создаёт новый загрузчик классов, используя указанный родительский загрузчик классов для делегирования.
protected
Создаёт новый загрузчик классов с указанным именем и использованием указанного родительского загрузчика классов для делегирования.

Краткое описание методов

Модификатор и тип Метод Описание
void clearAssertionStatus()
Устанавливает значение состояния проверки утверждений по умолчанию для этого загрузчика классов в false и отбрасывает любые параметры пакета или состояния проверки утверждений классов, связанные с загрузчиком классов.
protected final Class<?> defineClass(byte[] b, int off, int len)
Устарел.
Заменён на defineClass(String, byte[], int, int)
protected final Class<?> defineClass(String name, byte[] b, int off, int len)
Преобразует массив байтов в экземпляр класса Class.
protected final Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain)
Преобразует массив байтов в экземпляр класса Class, с заданным ProtectionDomain.
protected final Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)
Преобразует ByteBuffer в экземпляр класса Class, с заданным ProtectionDomain.
protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
Определяет пакет по имени в этом ClassLoader.
protected Class<?> findClass(String name)
Находит класс с указанным бинарным именем.
protected Class<?> findClass(String moduleName, String name)
Находит класс с заданным бинарным именем в модуле, определённом для этого загрузчика классов.
protected String findLibrary(String libname)
Возвращает абсолютный путь к имени нативной библиотеки.
protected final Class<?> findLoadedClass(String name)
Возвращает класс с заданным бинарным именем, если этот загрузчик был записан виртуальной машиной Java как инициализирующий загрузчик класса с этим бинарным именем.
protected URL findResource(String name)
Находит ресурс с заданным именем.
protected URL findResource(String moduleName, String name)
Возвращает URL-адрес ресурса в модуле, определённом для этого загрузчика классов.
protected Enumeration<URL> findResources(String name)
Возвращает перечисление объектов URL, представляющих все ресурсы с заданным именем.
protected final Class<?> findSystemClass(String name)
Находит класс с указанным бинарным именем, загружая его при необходимости.
protected Object getClassLoadingLock(String className)
Возвращает объект блокировки для операций загрузки классов.
final Package getDefinedPackage(String name)
Возвращает Package заданного имени, определённого этим загрузчиком классов.
final Package[] getDefinedPackages()
Возвращает все Package определённые этим загрузчиком классов.
String getName()
Возвращает имя этого загрузчика классов или null если этому загрузчику классов не задано имя.
protected Package getPackage(String name)
Устарел.
Если несколько загрузчиков классов делегируют друг другу и определяют классы с одинаковым именем пакета, и один такой загрузчик полагается на поведение поиска getPackage для возвращения Package из родительского загрузчика, то свойства, доступные через Package, могут не соответствовать ожиданиям в остальной части программы.
protected Package[] getPackages()
Возвращает все Package определённые этим загрузчиком классов и его предками.
final ClassLoader getParent()
Возвращает родительский загрузчик классов для делегирования.
static ClassLoader getPlatformClassLoader()
Возвращает платформенный загрузчик классов.
URL getResource(String name)
Находит ресурс с заданным именем.
InputStream getResourceAsStream(String name)
Возвращает поток для чтения указанного ресурса.
Enumeration<URL> getResources(String name)
Находит все ресурсы с заданным именем.
static ClassLoader getSystemClassLoader()
Возвращает системный загрузчик классов.
static URL getSystemResource(String name)
Находит ресурс с указанным именем из пути поиска, используемого для загрузки классов.
static InputStream getSystemResourceAsStream(String name)
Открывает для чтения ресурс с указанным именем из пути поиска, используемого для загрузки классов.
static Enumeration<URL> getSystemResources(String name)
Находит все ресурсы с указанным именем из пути поиска, используемого для загрузки классов.
final Module getUnnamedModule()
Возвращает безымянный Module для этого загрузчика классов.
final boolean isRegisteredAsParallelCapable()
Возвращает true если этот загрузчик классов зарегистрирован как параллельный, в противном случае false.
Class<?> loadClass(String name)
Загружает класс с указанным бинарным именем.
protected Class<?> loadClass(String name, boolean resolve)
Загружает класс с указанным бинарным именем.
protected static boolean registerAsParallelCapable()
Регистрирует вызывающего как параллельного.
protected final void resolveClass(Class<?> c)
Связывает указанный класс.
Stream<URL> resources(String name)
Возвращает поток, элементами которого являются URL-адреса всех ресурсов с заданным именем.
void setClassAssertionStatus(String className, boolean enabled)
Устанавливает желаемое состояние проверки утверждений для указанного класса верхнего уровня в этом загрузчике классов и всех вложенных классов, содержащихся в нём.
void setDefaultAssertionStatus(boolean enabled)
Устанавливает значение состояния проверки утверждений по умолчанию для этого загрузчика классов.
void setPackageAssertionStatus(String packageName, boolean enabled)
Устанавливает состояние проверки утверждений по умолчанию для указанного пакета.
protected final void setSigners(Class<?> c, Object[] signers)
Устанавливает подписи класса.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

ClassLoader

protected ClassLoader(String name, ClassLoader parent)
Создаёт новый загрузчик классов с указанным именем и родительским загрузчиком классов для делегирования.
Примечание API:
Если родительский загрузчик задан как null (для загрузчика загрузки платформы), то нет гарантии, что все классы платформы будут видны.
Параметры:
name - имя загрузчика классов; или null, если имя не задано
parent - родительский загрузчик классов
Исключения:
IllegalArgumentException - если заданное имя пустое.
SecurityException - Если существует менеджер безопасности, и его метод SecurityManager.checkCreateClassLoader() не разрешает создание нового загрузчика классов.
С тех пор:
9

ClassLoader

protected ClassLoader(ClassLoader parent)
Создаёт новый загрузчик классов, используя указанный родительский загрузчик классов для делегирования.

Если существует менеджер безопасности, вызывается его метод checkCreateClassLoader. Это может привести к исключению безопасности.

Примечание API:
Если родительский загрузчик задан как null (для загрузчика загрузки платформы), то нет гарантии, что все классы платформы будут видны.
Параметры:
parent - Родительский загрузчик классов
Исключения:
SecurityException - Если существует менеджер безопасности, и его checkCreateClassLoader метод не разрешает создание нового загрузчика классов.
С тех пор:
1.2

ClassLoader

protected ClassLoader()
Создаёт новый загрузчик классов, используя ClassLoader возвращаемый методом getSystemClassLoader() в качестве родительского загрузчика классов.

Если существует менеджер безопасности, вызывается его метод checkCreateClassLoader. Это может привести к исключению безопасности.

Исключения:
SecurityException - Если существует менеджер безопасности, и его checkCreateClassLoader метод не разрешает создание нового загрузчика классов.

Подробное описание методов

getName

public String getName()
Возвращает имя этого загрузчика классов или null если этот загрузчик классов не имеет имени.
Примечание API:
Этот метод не является final для совместимости. Если этот метод переопределяется, этот метод должен возвращать то же имя, что и при создании этого загрузчика классов.
Возвращает:
Имя этого загрузчика классов; или null если этот загрузчик классов не имеет имени.
С тех пор:
9

loadClass

public Class<?> loadClass(String name) throws ClassNotFoundException
Загружает класс с указанным бинарным именем. Этот метод ищет классы таким же образом, как и метод loadClass(String, boolean). Он вызывается виртуальной машиной Java для разрешения ссылок на классы. Вызов этого метода эквивалентен вызову loadClass(name, false).
Параметры:
name - Бинарное имя класса
Возвращает:
Результат Class объект
Исключения:
ClassNotFoundException - Если класс не был найден

loadClass

protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
Загружает класс с указанным бинарным именем. Стандартная реализация этого метода ищет классы в следующем порядке:
  1. Вызовите findLoadedClass(String) для проверки, загружен ли класс.

  2. Вызовите метод loadClass на родительском загрузчике классов. Если родительским загрузчиком является null загрузчик классов, встроенный в виртуальную машину, используется вместо него.

  3. Вызовите метод findClass(String) для поиска класса.

Если класс был найден с помощью вышеуказанных шагов, и флаг resolve имеет значение true, этот метод вызовет метод resolveClass(Class) на полученном Class объекте.

Подклассы ClassLoader рекомендуется переопределять findClass(String), а не этот метод.

Если не переопределено, этот метод синхронизируется на результате метода getClassLoadingLock в течение всего процесса загрузки класса.

Параметры:
name - Бинарное имя класса
resolve - Если true разрешить класс
Возвращает:
Результат Class объект
Исключения:
ClassNotFoundException - Если класс не удалось найти

getClassLoadingLock

protected Object getClassLoadingLock(String className)
Возвращает объект блокировки для операций загрузки классов. Для обратной совместимости, стандартная реализация этого метода работает следующим образом. Если этот объект ClassLoader зарегистрирован как способный к параллельной работе, метод возвращает посвящённый объект, связанный с указанным именем класса. В противном случае метод возвращает этот объект ClassLoader.
Параметры:
className - Имя класса, который будет загружен
Возвращает:
блокировка для операций загрузки классов
Исключения:
NullPointerException - Если зарегистрирован как способный к параллельной работе и className равно null
С тех пор:
1.7
См. также:
  • loadClass(String, boolean)

findClass

protected Class<?> findClass(String name) throws ClassNotFoundException
Находит класс с указанным бинарным именем. Этот метод должен быть переопределён реализациями загрузчика классов, которые следуют модели делегирования для загрузки классов, и вызывается методом loadClass после проверки родительского загрузчика классов на наличие запрошенного класса.
Требования к реализации:
Стандартная реализация выбрасывает ClassNotFoundException.
Параметры:
name - Бинарное имя класса
Возвращает:
Результат Class объект
Исключения:
ClassNotFoundException - Если класс не удалось найти
С тех пор:
1.2

findClass

protected Class<?> findClass(String moduleName, String name)
Ищет класс с заданным бинарным именем в модуле, определённом для этого загрузчика классов. Реализации загрузчика классов, поддерживающие загрузку из модулей, должны переопределять этот метод.
Примечание API:
Этот метод возвращает null вместо того, чтобы выбрасывать ClassNotFoundException если класс не удалось найти.
Требования к реализации:
Стандартная реализация пытается найти класс, вызывая findClass(String) когда moduleName равно null. В противном случае возвращает null.
Параметры:
moduleName - Имя модуля; или null для поиска класса в безымянном модуле для этого загрузчика классов
name - Бинарное имя класса
Возвращает:
Результат Class объект, или null если класс не удалось найти.
С тех пор:
9

defineClass

@Deprecated(since="1.1") protected final Class<?> defineClass(byte[] b, int off, int len) throws ClassFormatError
Устарел.
Заменён на defineClass(String, byte[], int, int)
Преобразует массив байтов в экземпляр класса Class. Перед использованием Class его необходимо разрешить. Этот метод устарел в пользу версии, принимающей бинарное имя в качестве первого аргумента, и является более безопасным.
Параметры:
b - Байты, составляющие данные класса. Байты в позициях off по off+len-1 должны иметь формат правильного файла класса, как определено в Спецификации виртуальной машины Java.
off - Начальный смещение в b данных класса
len - Длина данных класса
Возвращает:
Результат Class объект, созданный из указанных данных класса
Исключения:
ClassFormatError - Если данные не содержали допустимого класса
IndexOutOfBoundsException - Если либо off или len отрицательны, или если off+len больше, чем b.length.
SecurityException - Если попытка добавить этот класс в пакет, содержащий классы, подписанные другим набором сертификатов, чем этот класс, или если попытка определить класс в пакете с полным именем, начинающимся с "java.".
См. также:
  • loadClass(String, boolean)
  • resolveClass(Class)

defineClass

protected final Class<?> defineClass(String name, byte[] b, int off, int len) throws ClassFormatError
Преобразует массив байтов в экземпляр класса Class. Перед использованием Class он должен быть разрешен.

Этот метод назначает по умолчанию ProtectionDomain новому определённому классу. ProtectionDomain фактически предоставляется тот же набор разрешений, что и при вызове Policy.getPolicy().getPermissions(new CodeSource(null, null)). Объект по умолчанию создаётся при первом вызове defineClass и используется повторно при последующих вызовах.

Чтобы назначить определённый ProtectionDomain классу, используйте метод defineClass, принимающий ProtectionDomain в качестве одного из аргументов.

Этот метод определяет пакет в этом загрузчике классов, соответствующий пакету Class (если такой пакет ещё не был определён в этом загрузчике классов). Имя определённого пакета получено из бинарного имени класса, указанного массивом байтов b. Другие свойства определённого пакета указаны в Package.

Parameters:
name - Ожидаемое бинарное имя класса или null, если неизвестно
b - Байты, составляющие данные класса. Байты в позициях off по off+len-1 должны иметь формат допустимого файла класса, как определено в Спецификации виртуальной машины Java.
off - Начальный смещение в b данных класса
len - Длина данных класса
Returns:
Объект Class, созданный из указанных данных класса.
Throws:
ClassFormatError - Если данные не содержали допустимый класс
IndexOutOfBoundsException - Если значения off или len отрицательны, или если off+len больше b.length.
SecurityException - Если выполняется попытка добавить этот класс в пакет, содержащий классы, подписанные другим набором сертификатов, чем этот класс (который не подписан), или если name начинается с "java.".
Since:
1.1
See Also:
  • loadClass(String, boolean)
  • resolveClass(Class)
  • CodeSource
  • SecureClassLoader

defineClass

protected final Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) throws ClassFormatError
Преобразует массив байтов в экземпляр класса Class, с заданным ProtectionDomain

Если заданный ProtectionDomain равен null, то по умолчанию будет назначена область защиты класса, как указано в документации для defineClass(String, byte[], int, int). Перед использованием класса он должен быть разрешен.

Первый определённый класс в пакете определяет точный набор сертификатов, которые должны содержать все последующие классы, определённые в этом пакете. Набор сертификатов для класса извлекается из CodeSource внутри ProtectionDomain класса. Любые классы, добавленные в этот пакет, должны содержать тот же набор сертификатов, иначе будет выброшено исключение SecurityException. Обратите внимание, что если name равно null, эта проверка не выполняется. Вы всегда должны передавать бинарное имя класса, который вы определяете, а также байты. Это гарантирует, что класс, который вы определяете, является тем классом, который вы ожидаете.

Если заданное name начинается с "java.", его может определить только платформенный загрузчик классов или его предки; в противном случае будет выброшено исключение SecurityException. Если name не равно null, оно должно быть равно бинарному имени класса, указанного массивом байтов b, в противном случае будет выброшено исключение NoClassDefFoundError.

Этот метод определяет пакет в этом загрузчике классов, соответствующий пакету Class (если такой пакет ещё не был определён в этом загрузчике классов). Имя определённого пакета получено из бинарного имени класса, указанного массивом байтов b. Другие свойства определённого пакета указаны в Package.

Parameters:
name - Ожидаемое бинарное имя класса или null, если неизвестно
b - Байты, составляющие данные класса. Байты в позициях off по off+len-1 должны иметь формат допустимого файла класса, как определено в Спецификации виртуальной машины Java.
off - Начальный смещение в b данных класса
len - Длина данных класса
protectionDomain - ProtectionDomain класса
Returns:
Объект Class созданный из данных, и ProtectionDomain.
Throws:
ClassFormatError - Если данные не содержали допустимый класс
NoClassDefFoundError - Если name не равно null и не равно бинарному имени класса, указанного b
IndexOutOfBoundsException - Если значения off или len отрицательны, или если off+len больше b.length.
SecurityException - Если выполняется попытка добавить этот класс в пакет, содержащий классы, подписанные другим набором сертификатов, чем этот класс, или если name начинается с "java." и этот загрузчик классов не является платформенным или его предком.

defineClass

protected final Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) throws ClassFormatError
Преобразует ByteBuffer в экземпляр класса Class, с заданным ProtectionDomain Если заданный ProtectionDomain равен null, то по умолчанию будет назначена область защиты класса, как указано в документации для defineClass(String, byte[], int, int). Перед использованием класса он должен быть разрешен.

Правила о первом классе, определённом в пакете, определяющем набор сертификатов для пакета, ограничениях на имена классов и определённом пакете класса, идентичны правилам, указанным в документации для defineClass(String, byte[], int, int, ProtectionDomain).

Вызов этого метода в форме cl.defineClass(name, bBuffer, pd) даёт точно такой же результат, как и операторы

...
byte[] temp = new byte[bBuffer.remaining()];
bBuffer.get(temp);
return cl.defineClass(name, temp, 0, temp.length, pd);

Parameters:
name - Ожидаемое бинарное имя класса, или null если неизвестно
b - Байты, составляющие данные класса. Байты с позиций b.position() по b.position() + b.limit() -1 должны иметь формат допустимого файла класса, как определено в Спецификации виртуальной машины Java.
protectionDomain - ProtectionDomain класса или null.
Returns:
Объект Class созданный из данных, и ProtectionDomain.
Throws:
ClassFormatError - Если данные не содержали допустимый класс.
NoClassDefFoundError - Если name не равно null и не равно бинарному имени класса, указанного b
SecurityException - Если выполняется попытка добавить этот класс в пакет, содержащий классы, подписанные другим набором сертификатов, чем этот класс, или если name начинается с "java.".
Since:
1.5
See Also:
  • defineClass(String, byte[], int, int, ProtectionDomain)

resolveClass

protected final void resolveClass(Class<?> c)
Связывает указанный класс. Этот (вводящий в заблуждение) метод может быть использован загрузчиком классов для связывания класса. Если класс c уже связан, то этот метод просто возвращает значение. В противном случае класс связывается в соответствии с главой "Исполнение" Спецификации языка Java.
Parameters:
c - Класс для связывания
Throws:
NullPointerException - Если c равно null.
See Also:
  • defineClass(String, byte[], int, int)
END_OF_DOCUMENT_MARKER

findSystemClass

protected final Class<?> findSystemClass(String name) throws ClassNotFoundException
Находит класс с заданным именем бинарного файла, загружая его при необходимости.

Этот метод загружает класс через системный загрузчик классов (см. getSystemClassLoader()). Возвращаемый объект класса может иметь более одного ClassLoader связанного с ним. Подклассы ClassLoader обычно не должны вызывать этот метод, так как большинству загрузчиков классов нужно переопределять только findClass(String).

Parameters:
name - Имя бинарного файла класса
Returns:
Объект класса для заданного name
Throws:
ClassNotFoundException - Если класс не был найден
See Also:
  • ClassLoader(ClassLoader)
  • getParent()

findLoadedClass

protected final Class<?> findLoadedClass(String name)
Возвращает класс с заданным именем бинарного файла, если этот загрузчик был зарегистрирован виртуальной машиной Java в качестве инициатора загрузки класса с этим именем бинарного файла. В противном случае возвращается null.
Parameters:
name - Имя бинарного файла класса
Returns:
Объект класса, или null если класс не был загружен
Since:
1.1

setSigners

protected final void setSigners(Class<?> c, Object[] signers)
Устанавливает подписи класса. Это должно быть вызвано после определения класса.
Parameters:
c - Объект класса
signers - Подписи для класса
Since:
1.1

findResource

protected URL findResource(String moduleName, String name) throws IOException
Возвращает URL ресурса в модуле, определённом для этого загрузчика классов. Реализации загрузчиков классов, поддерживающие загрузку из модулей, должны переопределять этот метод.
API Note:
Этот метод является основой для методов Class.getResource, Class.getResourceAsStream и Module.getResourceAsStream. Он не подчиняется правилам инкапсуляции, заданным Module.getResourceAsStream.
Implementation Requirements:
Стандартная реализация пытается найти ресурс, вызывая findResource(String), когда moduleName является null. В противном случае возвращается null.
Parameters:
moduleName - Имя модуля; или null для поиска ресурса в безымянном модуле для этого загрузчика классов
name - Имя ресурса
Returns:
URL ресурса; null если ресурс не найден, URL не может быть сформирован для поиска ресурса, доступ к ресурсу запрещён менеджером безопасности, или модуль с указанным именем не определён для загрузчика классов.
Throws:
IOException - Если возникли ошибки ввода-вывода
Since:
9
See Also:
  • ModuleReader.find(String)

getResource

public URL getResource(String name)
Ищет ресурс с заданным именем. Ресурс — это данные (изображения, аудио, текст и т. д.), к которым класс может получить доступ независимо от расположения кода.

Имя ресурса — это имя пути, разделённое символом '/', которое идентифицирует ресурс.

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, заданным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда имя ресурса заканчивается на ".class", этот метод будет искать ресурсы только в пакетах именованных модулей, когда пакет opened безусловно (даже если вызывающий этот метод находится в том же модуле, что и ресурс).

API Note:
Если несколько модулей определены для одного загрузчика классов и более одного модуля содержит ресурс с заданным именем, порядок поиска модулей не определён и может быть очень непредсказуемым. При переопределении этого метода рекомендуется, чтобы реализация гарантировала, что любая делегация согласуется с методом getResources(String).
Implementation Requirements:
Стандартная реализация сначала ищет ресурс у родительского загрузчика классов; если родительский загрузчик null выполняет поиск по пути загрузчика классов, встроенного в виртуальную машину. Если ресурс не найден, этот метод вызывает findResource(String) для поиска ресурса.
Parameters:
name - Имя ресурса
Returns:
URL объект для чтения ресурса; null если ресурс не найден, URL не может быть сформирован для поиска ресурса, ресурс находится в пакете, который не открыт безусловно, или доступ к ресурсу запрещён менеджером безопасности.
Throws:
NullPointerException - Если name является null
Since:
1.1

getResources

public Enumeration<URL> getResources(String name) throws IOException
Находит все ресурсы с заданным именем. Ресурс — это данные (изображения, аудио, текст и т. д.), к которым класс может получить доступ независимо от расположения кода.

Имя ресурса — это имя пути, разделённое символом '/', которое идентифицирует ресурс.

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, заданным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда имя ресурса заканчивается на ".class", этот метод будет искать ресурсы только в пакетах именованных модулей, когда пакет opened безусловно (даже если вызывающий этот метод находится в том же модуле, что и ресурс).

API Note:
Если несколько модулей определены для одного загрузчика классов и более одного модуля содержит ресурс с заданным именем, порядок поиска не определён и может быть очень непредсказуемым. При переопределении этого метода рекомендуется, чтобы реализация гарантировала, что любая делегация согласуется с методом getResource(String). Это должно гарантировать, что первый элемент, возвращаемый методом nextElement объекта Enumeration, является тем же ресурсом, что и метод getResource(String) вернёт.
Implementation Requirements:
Стандартная реализация сначала ищет ресурс у родительского загрузчика классов; если родительский загрузчик null выполняет поиск по пути загрузчика классов, встроенного в виртуальную машину. Затем вызывается findResources(String) для поиска ресурсов с указанным именем в этом загрузчике классов. Возвращается перечисление, элементы которого — URL, найденные путём поиска у родительского загрузчика классов, за которым следуют элементы, найденные методом findResources.
Parameters:
name - Имя ресурса
Returns:
Перечисление объектов URL для ресурса. Если ресурсы не найдены, перечисление будет пустым. Ресурсы, для которых URL не может быть создан, находятся в пакете, который не открыт безусловно, или доступ к ресурсу запрещён менеджером безопасности, не возвращаются в перечислении.
Throws:
IOException - Если возникли ошибки ввода-вывода
NullPointerException - Если name является null
Since:
1.2

ресурсы

public Stream<URL> resources(String name)
Возвращает поток, элементы которого — URL всех ресурсов с заданным именем. Ресурс — это данные (изображения, аудио, текст и т. д.), к которым код класса может получить доступ независимо от расположения кода.

Имя ресурса — это имя пути, разделенного символом /, которое идентифицирует ресурс.

Ресурсы будут найдены при оценке возвращаемого потока. Если оценка приведет к IOException, то исключение I/O будет обернуто в UncheckedIOException, которое затем будет выброшено.

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда ресурс имеет имя, заканчивающееся на ".class", этот метод будет находить ресурсы в пакетах именованных модулей только тогда, когда пакет opened безусловно (даже если вызывающий метод находится в том же модуле, что и ресурс).

Примечание API:
При переопределении этого метода рекомендуется, чтобы реализация обеспечивала, что любая делегация согласуется с методом getResource(String). Это должно гарантировать, что первый элемент, возвращаемый потоком, является тем же ресурсом, который вернул бы метод getResource(String).
Требования к реализации:
По умолчанию реализация вызывает getResources для поиска всех ресурсов с заданным именем и возвращает поток с элементами в перечислении в качестве источника.
Параметры:
name - Имя ресурса
Возвращает:
Поток объектов ресурса URL. Если ресурсы не были найдены, поток будет пустым. Ресурсы, для которых невозможно создать URL, находятся в пакете, который не открыт безусловно, или доступ к ресурсу запрещен менеджером безопасности, не будут в потоке.
Бросает:
NullPointerException - Если name является null
С:
9

найтиРесурс

protected URL findResource(String name)
Ищет ресурс с заданным именем. Реализации загрузчиков классов должны переопределять этот метод.

Для ресурсов в именованных модулях метод должен реализовывать правила инкапсуляции, указанные в Module getResourceAsStream методе. Кроме того, он не должен находить ресурсы, не являющиеся ".class", в пакетах именованных модулей, если пакет не является opened безусловно.

Требования к реализации:
По умолчанию реализация возвращает null.
Параметры:
name - Имя ресурса
Возвращает:
объект URL для чтения ресурса; null если ресурс не был найден, URL не удалось создать для поиска ресурса, ресурс находится в пакете, который не открыт безусловно, или доступ к ресурсу запрещен менеджером безопасности.
С:
1.2

найтиРесурсы

protected Enumeration<URL> findResources(String name) throws IOException
Возвращает перечисление объектов URL, представляющих все ресурсы с заданным именем. Реализации загрузчиков классов должны переопределять этот метод.

Для ресурсов в именованных модулях метод должен реализовывать правила инкапсуляции, указанные в Module getResourceAsStream методе. Кроме того, он не должен находить ресурсы, не являющиеся ".class", в пакетах именованных модулей, если пакет не является opened безусловно.

Требования к реализации:
По умолчанию реализация возвращает перечисление, не содержащее элементов.
Параметры:
name - Имя ресурса
Возвращает:
Перечисление объектов URL для ресурса. Если ресурсы не были найдены, перечисление будет пустым. Ресурсы, для которых невозможно создать URL, находятся в пакете, который не открыт безусловно, или доступ к ресурсу запрещен менеджером безопасности, не возвращаются в перечислении.
Бросает:
IOException - Если возникают ошибки ввода-вывода
С:
1.2

зарегистрироватьКакПараллельноСпособный

protected static boolean registerAsParallelCapable()
Регистрирует вызывающий объект как параллельно способный. Регистрация выполняется только в том случае, если выполняются все следующие условия:
  1. экземпляр вызывающего объекта не был создан
  2. все суперклассы (кроме класса Object) вызывающего объекта зарегистрированы как параллельно способные

Обратите внимание, что после регистрации загрузчика класса как параллельно способного, изменить его обратно невозможно.

Возвращает:
true если вызывающий объект успешно зарегистрирован как параллельно способный и false в противном случае.
С:
1.7
См. также:
  • isRegisteredAsParallelCapable()

зарегистрированКакПараллельноСпособный

public final boolean isRegisteredAsParallelCapable()
Возвращает true если этот загрузчик классов зарегистрирован как параллельно способный, в противном случае false.
Возвращает:
true если этот загрузчик классов параллельно способен, в противном случае false.
С:
9
См. также:
  • registerAsParallelCapable()

getSystemResource

public static URL getSystemResource(String name)
Находит ресурс с заданным именем из пути поиска, используемого для загрузки классов. Этот метод находит ресурс через системный загрузчик классов (см. getSystemClassLoader()).

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда ресурс имеет имя, заканчивающееся на ".class", этот метод будет находить ресурсы в пакетах именованных модулей только тогда, когда пакет opened безусловно.

Параметры:
name - Имя ресурса
Возвращает:
URL URL до ресурса; null если ресурс не был найден, URL не удалось создать для поиска ресурса, ресурс находится в пакете, который не открыт безусловно, или доступ к ресурсу запрещен менеджером безопасности.
С:
1.1

getSystemResources

public static Enumeration<URL> getSystemResources(String name) throws IOException
Находит все ресурсы с заданным именем из пути поиска, используемого для загрузки классов. Найденные ресурсы возвращаются в виде Enumeration объектов URL.

Порядок поиска описан в документации для getSystemResource(String).

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда ресурс имеет имя, заканчивающееся на ".class", этот метод будет находить ресурсы в пакетах именованных модулей только тогда, когда пакет opened безусловно.

Параметры:
name - Имя ресурса
Возвращает:
Перечисление объектов URL для ресурса. Если ресурсы не были найдены, перечисление будет пустым. Ресурсы, для которых невозможно создать URL, находятся в пакете, который не открыт безусловно, или доступ к ресурсу запрещен менеджером безопасности, не возвращаются в перечислении.
Бросает:
IOException - Если возникают ошибки ввода-вывода
С:
1.2

getResourceAsStream

public InputStream getResourceAsStream(String name)
Возвращает поток ввода для чтения указанного ресурса.

Порядок поиска описан в документации для getResource(String).

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда ресурс имеет имя, заканчивающееся на ".class", этот метод будет находить ресурсы в пакетах именованных модулей только тогда, когда пакет opened безусловно.

Параметры:
name - Имя ресурса
Возвращает:
Поток ввода для чтения ресурса; null если ресурс не был найден, ресурс находится в пакете, который не открыт безусловно, или доступ к ресурсу запрещен менеджером безопасности.
Бросает:
NullPointerException - Если name является null
С:
1.1

getSystemResourceAsStream

public static InputStream getSystemResourceAsStream(String name)
Открыть для чтения ресурс с указанным именем из пути поиска, используемого для загрузки классов. Этот метод находит ресурс с помощью системного загрузчика классов (см. getSystemClassLoader()).

Ресурсы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module.getResourceAsStream. Кроме того, за исключением специального случая, когда ресурс имеет имя, заканчивающееся на ".class", этот метод будет находить ресурсы только в пакетах именованных модулей, когда пакет opened безусловно.

Parameters:
name - Имя ресурса
Returns:
Поток ввода для чтения ресурса; null если ресурс не найден, ресурс находится в пакете, который не открыт безусловно, или доступ к ресурсу запрещён менеджером безопасности.
Since:
1.1

getParent

public final ClassLoader getParent()
Возвращает родительский загрузчик классов для делегирования. Некоторые реализации могут использовать null для представления загрузчика Bootstrap-классов. Этот метод вернёт null в таких реализациях, если родительским загрузчиком класса является загрузчик Bootstrap-классов.
Returns:
Родительский загрузчик ClassLoader
Throws:
SecurityException - Если присутствует менеджер безопасности, и загрузчик классов вызывающего кода не является null и не является предком этого загрузчика классов, и вызывающий код не имеет RuntimePermission("getClassLoader")
Since:
1.2

getUnnamedModule

public final Module getUnnamedModule()
Возвращает безымянный Module для этого загрузчика классов.
Returns:
Безымянный модуль для этого загрузчика классов
Since:
9
See Also:
  • Module.isNamed()

getPlatformClassLoader

public static ClassLoader getPlatformClassLoader()
Возвращает платформенный загрузчик классов. Все платформенные классы видны для платформенного загрузчика классов.
Implementation Note:
Имя встроенного платформенного загрузчика классов - "platform".
Returns:
Платформенный загрузчик ClassLoader.
Throws:
SecurityException - Если присутствует менеджер безопасности, и загрузчик классов вызывающего кода не является null, и загрузчик классов вызывающего кода не тот же самый или не является предком платформенного загрузчика классов, и вызывающий код не имеет RuntimePermission("getClassLoader")
Since:
9

getSystemClassLoader

public static ClassLoader getSystemClassLoader()
Возвращает системный загрузчик классов. Это родитель по умолчанию для делегирования новых ClassLoader экземпляров и обычно используется для запуска приложения.

Этот метод вызывается в начале процесса запуска среды выполнения, в этот момент он создает системный загрузчик классов. Этот загрузчик классов будет загрузчиком контекста для основного потока приложения (например, потока, который вызывает main метод главного класса).

Системный загрузчик классов по умолчанию является зависящим от реализации экземпляром этого класса.

Если системная переменная "java.system.class.loader" определена при первом вызове этого метода, то значение этой переменной принимается как имя класса, который будет возвращен как системный загрузчик классов. Класс загружается с помощью системного загрузчика классов по умолчанию и должен определять публичный конструктор, принимающий один параметр типа ClassLoader, который используется как родитель делегирования. Затем экземпляр создается с помощью этого конструктора с системным загрузчиком классов по умолчанию в качестве параметра. Результирующий загрузчик классов определен как системный загрузчик классов. Во время построения загрузчик классов должен с большой осторожностью избегать вызова getSystemClassLoader(). Если обнаружено циклическое инициализирование системного загрузчика классов, то выбрасывается IllegalStateException.

Implementation Note:
Системная переменная для переопределения системного загрузчика классов не проверяется до тех пор, пока среда выполнения не будет почти полностью инициализирована. Код, выполняющий этот метод во время запуска, должен позаботиться о том, чтобы не кэшировать возвращаемое значение до тех пор, пока система не будет полностью инициализирована.

Имя встроенного системного загрузчика классов - "app". Системная переменная "java.class.path" считывается во время ранней инициализации среды выполнения, чтобы определить путь к классам. Пустое значение переменной "java.class.path" интерпретируется по-разному в зависимости от того, является ли начальный модуль (модуль, содержащий главный класс) именованным или безымянным: Если именованный, встроенный системный загрузчик классов не будет иметь путь к классам и будет искать классы и ресурсы с помощью пути к модулю приложения; в противном случае, если безымянный, он установит путь к классам в текущий рабочий каталог.

Файлы JAR в пути к классам могут содержать атрибут Class-Path manifest для указания зависимых файлов JAR, которые должны быть включены в путь к классам. Class-Path записи должны соответствовать определенным условиям для валидности (подробности см. в Спецификации файла JAR). Неверные Class-Path записи игнорируются. Для отладки, пропущенные записи могут быть выведены в консоль, если системная переменная jdk.net.URLClassPath.showIgnoredClassPathEntries установлена в true.

Returns:
Системный загрузчик ClassLoader
Throws:
SecurityException - Если присутствует менеджер безопасности, и загрузчик классов вызывающего кода не является null и не тот же самый или не является предком системного загрузчика классов, и вызывающий код не имеет RuntimePermission("getClassLoader")
IllegalStateException - Если вызывается рекурсивно во время построения загрузчика классов, указанного в переменной "java.system.class.loader".
Error - Если системная переменная "java.system.class.loader" определена, но имя класса не удалось загрузить, класс-провайдер не определяет необходимый конструктор или в этом конструкторе выбрасывается исключение при вызове. Причина ошибки может быть получена с помощью метода Throwable.getCause().

definePackage

protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
Определяет пакет по имени в этом ClassLoader.

Имена пакетов должны быть уникальными в рамках загрузчика классов и не могут быть переопределены или изменены после создания.

Если загрузчик классов хочет определить пакет со специфическими свойствами, такими как информация о версии, то загрузчик классов должен вызвать этот definePackage метод до вызова defineClass. В противном случае, метод defineClass определит пакет в этом загрузчике классов, соответствующий пакету нового определенного класса; свойства этого определенного пакета задаются классом Package.

API Note:
Загрузчик классов, который хочет определить пакет для классов в JAR, обычно использует заголовок, версию и поставщика из manifest JAR. Если пакет задан как sealed в manifest JAR, то URL файла JAR используется как sealBase. Если классы пакета 'p' определены этим загрузчиком классов из нескольких JAR, то объект Package может содержать различную информацию в зависимости от первого класса пакета 'p' определенного и manifest какого JAR считан первым для явного определения пакета 'p'.

Сильно рекомендуется, чтобы загрузчик классов не вызывал этот метод для явного определения пакетов в именованных модулях; вместо этого пакет будет автоматически определен при определении класса. Если необходимо явно определить Package, то необходимо убедиться, что все пакеты в именованном модуле определяются с помощью свойств, заданных классом Package. В противном случае, некоторые Package объекты в именованном модуле могут быть, например, запечатаны с различными базами запечатывания.

Parameters:
name - Имя пакета
specTitle - Название спецификации
specVersion - Версия спецификации
specVendor - Поставщик спецификации
implTitle - Название реализации
implVersion - Версия реализации
implVendor - Поставщик реализации
sealBase - Если не null, то этот пакет запечатан относительно предоставленного кода-источника URL объекта. В противном случае пакет не запечатан.
Returns:
Новый определенный объект Package
Throws:
NullPointerException - если name является null.
IllegalArgumentException - если пакет с заданным name уже определён этим загрузчиком классов
See Java Virtual Machine Specification:
5.3 Создание и загрузка
Since:
1.2
See Also:
  • Спецификация файла JAR: Запечатывание пакетов

getDefinedPackage

public final Package getDefinedPackage(String name)
Возвращает пакет заданного имени, определённый этим загрузчиком классов.
Параметры:
name - Имя пакета
Возвращает:
Пакет заданного имени, определённый этим загрузчиком классов, или null при отсутствии.
Исключение:
NullPointerException - если name является null.
См. Спецификацию виртуальной машины Java:
5.3 Создание и загрузка
С:
9

getDefinedPackages

public final Package[] getDefinedPackages()
Возвращает все пакеты, определённые этим загрузчиком классов. Возвращаемый массив не содержит дубликатов пакетов с одинаковым именем.
Примечание API:
Этот метод возвращает массив для согласованности с существующим методом getPackages().
Возвращает:
Массив объектов-пакетов, определённых этим загрузчиком классов; или массив нулевой длины, если пакеты не определены.
См. Спецификацию виртуальной машины Java:
5.3 Создание и загрузка
С:
9

getPackage

@Deprecated(since="9") protected Package getPackage(String name)
Устарело.
Если несколько загрузчиков классов делегируют друг другу и определяют классы с одинаковым именем пакета, и один из них полагается на поведение поиска getPackage для возврата пакета от родительского загрузчика, то свойства, предоставляемые Package, могут быть не такими, как ожидается в остальной программе. Например, Package будет отображать только аннотации из файла package-info.class, определённого родительским загрузчиком, даже если аннотации существуют в файле package-info.class , определённом дочерним загрузчиком. Более надёжный подход заключается в использовании метода getDefinedPackage(java.lang.String), который возвращает пакет для указанного загрузчика классов.
Ищет пакет по имени в этом загрузчике классов и его предках.

Если этот загрузчик классов определяет пакет заданного имени, этот пакет возвращается. В противном случае предки этого загрузчика классов рекурсивно проверяются (родитель за родителем) для нахождения пакета с заданным именем.

Примечание API:
Загрузчик платформы platform class loader может делегировать запросы к загрузчику приложений, но загрузчик приложений не является его предком. При вызове на загрузчике платформы этот метод не найдёт пакеты, определённые загрузчиком приложений.
Параметры:
name - Имя пакета
Возвращает:
Пакет заданного имени, определённый этим загрузчиком классов или его предками, или null при отсутствии.
Исключение:
NullPointerException - если name является null.
С:
1.2
См. также:
  • getDefinedPackage(String)

getPackages

protected Package[] getPackages()
Возвращает все пакеты, определённые этим загрузчиком классов и его предками. Возвращаемый массив может содержать более одного объекта-пакета с одинаковым именем пакета, каждый из которых определён другим загрузчиком классов в иерархии загрузчиков классов.
Примечание API:
Загрузчик платформы platform class loader может делегировать запросы к загрузчику приложений. Иными словами, пакеты, определённые в модулях, делегированные загрузчику приложений, могут быть видны загрузчику платформы. С другой стороны, загрузчик приложений не является его предком, и поэтому при вызове на загрузчике платформы этот метод не вернёт пакеты, определённые загрузчиком приложений.
Возвращает:
Массив объектов-пакетов, определённых этим загрузчиком классов и его предками
С:
1.2
См. также:
  • getDefinedPackages()

findLibrary

protected String findLibrary(String libname)
Возвращает абсолютный путь к нативной библиотеке. JVM вызывает этот метод, чтобы найти нативные библиотеки, принадлежащие классам, загруженным с помощью этого загрузчика классов. Если этот метод возвращает null, JVM ищет библиотеку по пути, указанному в свойстве "java.library.path".
Параметры:
libname - Имя библиотеки
Возвращает:
Абсолютный путь к нативной библиотеке
С:
1.2
См. также:
  • System.loadLibrary(String)
  • System.mapLibraryName(String)

setDefaultAssertionStatus

public void setDefaultAssertionStatus(boolean enabled)
Устанавливает состояние по умолчанию для проверки утверждений для этого загрузчика классов. Это значение определяет, будут ли включены проверки утверждений по умолчанию для классов, загруженных этим загрузчиком и инициализированных в будущем. Это значение может быть переопределено на уровне пакета или класса путём вызова setPackageAssertionStatus(String, boolean) или setClassAssertionStatus(String, boolean).
Параметры:
enabled - true если проверки утверждений включены по умолчанию для классов, загруженных этим загрузчиком, false если они отключены по умолчанию.
С:
1.4

setPackageAssertionStatus

public void setPackageAssertionStatus(String packageName, boolean enabled)
Устанавливает состояние по умолчанию для проверки утверждений для пакета с указанным именем. Состояние по умолчанию для пакета определяет состояние проверки утверждений для классов, инициализированных в будущем, которые принадлежат указанному пакету или любому из его "подпакетов".

Подпакет пакета с именем p - это любой пакет, имя которого начинается с "p.". Например, javax.swing.text является подпакетом javax.swing, а java.util и java.lang.reflect являются подпакетами java.

В случае, если для данного класса применимо несколько значений по умолчанию для пакета, значение по умолчанию для наиболее конкретного пакета имеет приоритет над другими. Например, если для javax.lang и javax.lang.reflect установлены значения по умолчанию для пакета, последнее значение по умолчанию для пакета применяется к классам в javax.lang.reflect.

Значения по умолчанию для пакетов имеют приоритет над значением по умолчанию для загрузчика классов и могут быть переопределены на уровне класса путём вызова setClassAssertionStatus(String, boolean).

Параметры:
packageName - Имя пакета, для которого необходимо установить состояние по умолчанию для проверки утверждений. Значение null указывает на пакет без имени, который является "текущим" (см. раздел 7.4.2 спецификации языка Java).
enabled - true если для классов, загруженных этим загрузчиком и принадлежащих указанному пакету или любому из его подпакетов, проверки утверждений включены по умолчанию, false если они отключены по умолчанию.
С:
1.4

setClassAssertionStatus

public void setClassAssertionStatus(String className, boolean enabled)
Устанавливает желаемое состояние проверки утверждений для имени класса верхнего уровня в этом загрузчике классов и для всех вложенных классов, содержащихся в нём. Это значение имеет приоритет над значением по умолчанию для загрузчика классов и над любым применимым значением по умолчанию для пакета. Этот метод не имеет эффекта, если указанный класс уже инициализирован. (После инициализации состояние проверки утверждений класса изменить нельзя).

Если указанный класс не является классом верхнего уровня, этот вызов не повлияет на фактическое состояние проверки утверждений для любого класса.

Параметры:
className - Полное имя класса верхнего уровня, для которого нужно установить состояние проверки утверждений.
enabled - true если для данного класса необходимо включить проверки утверждений при (и если) он будет инициализирован, false если проверки утверждений для класса необходимо отключить.
С:
1.4

clearAssertionStatus

public void clearAssertionStatus()
Устанавливает состояние по умолчанию для проверки утверждений для этого загрузчика классов в false и отбрасывает все значения по умолчанию для пакетов или состояния проверки утверждений, связанные с загрузчиком классов. Этот метод предоставляется для того, чтобы загрузчики классов могли игнорировать любые параметры проверки утверждений командной строки или сохраняемые параметры и «начинать с чистого листа».
С:
1.4

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ClassLoader.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API