ClassLoader Класс

Определение

Загрузчик классов — это объект, который отвечает за загрузку классов.

[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
Наследование
ClassLoader
Производный
Атрибуты

Комментарии

Загрузчик классов — это объект, который отвечает за загрузку классов. Класс ClassLoader является абстрактным классом. Учитывая двоичное имя класса, загрузчик класса должен попытаться найти или создать данные, составляющие определение для класса. Типичная стратегия заключается в преобразовании имени в имя файла, а затем считывания "файла класса" с этим именем из файловой системы.

Каждый Class <tt>Class</tt> объект содержит Class#getClassLoader() reference объект для объекта , ClassLoader который его определил.

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

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

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

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

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

Как правило, виртуальная машина Java загружает классы из локальной файловой системы в зависимости от платформы. Например, в системах UNIX виртуальная машина загружает классы из каталога, определенного переменной CLASSPATH среды.

Однако некоторые классы могут не исходить из файла; они могут быть получены из других источников, например сети, или могут быть созданы приложением. Метод #defineClass(String, byte[], int, int) <tt>defineClass</tt> преобразует массив байтов в экземпляр класса Class. Экземпляры этого нового определенного класса можно создать с помощью Class#newInstance <tt>Class.newInstance</tt>.

Методы и конструкторы объектов, созданных загрузчиком классов, могут ссылаться на другие классы. Чтобы определить классы, на которые ссылается, виртуальная машина Java вызывает #loadClass <tt>loadClass</tt> метод загрузчика класса, который изначально создал класс.

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

<blockquote>

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

</blockquote>

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

<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
                        &nbsp;.&nbsp;.&nbsp;.
                    }
                }

</blockquote>

<h3> "name">Binary names</h3>

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

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

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

</blockquote>

Добавлено в версии 1.0.

Документация по Java для java.lang.ClassLoader.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

ClassLoader()

Создает новый загрузчик класса, используя объект , ClassLoader возвращаемый методом #getSystemClassLoader() <tt>getSystemClassLoader()</tt> в качестве загрузчика родительского класса.

ClassLoader(ClassLoader)

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

ClassLoader(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
JniPeerMembers

Загрузчик классов — это объект, который отвечает за загрузку классов.

Parent

Возвращает загрузчик родительского класса для делегирования.

PeerReference

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
SystemClassLoader

Возвращает загрузчик системного класса для делегирования.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

ClearAssertionStatus()

Устанавливает состояние утверждения по умолчанию для этого загрузчика false класса и отменяет все значения по умолчанию пакета или параметры состояния утверждения класса, связанные с загрузчиком класса.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
DefineClass(Byte[], Int32, Int32)
Устаревшие..

Преобразует массив байтов в экземпляр класса Class.

DefineClass(String, Byte[], Int32, Int32)

Преобразует массив байтов в экземпляр класса Class.

DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)

Преобразует массив байтов в экземпляр класса Classс необязательным ProtectionDomain.

DefineClass(String, ByteBuffer, ProtectionDomain)

Преобразует в java.nio.ByteBuffer <tt>ByteBuffer</tt> экземпляр класса Classс необязательным ProtectionDomain.

DefinePackage(String, String, String, String, String, String, String, URL)

Определяет пакет по имени в этом ClassLoaderобъекте .

Dispose()

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
Dispose(Boolean)

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
FindClass(String)

Находит класс с указанным двоичным именем.

FindLibrary(String)

Возвращает абсолютный путь к собственной библиотеке.

FindLoadedClass(String)

Возвращает класс с заданным двоичным именем, если этот загрузчик был записан виртуальной машиной Java в качестве инициатора загрузчика класса с таким двоичным именем.

FindResource(String)

Находит ресурс с заданным именем.

FindResources(String)

Возвращает перечисление объектов , java.net.URL <tt>URL</tt> представляющих все ресурсы с заданным именем.

FindSystemClass(String)

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

GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
GetPackage(String)

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

GetPackages()

Возвращает все элементы , Packages определенные этим загрузчиком класса и его предками.

GetResource(String)

Находит ресурс с заданным именем.

GetResourceAsStream(String)

Возвращает входной поток для чтения указанного ресурса.

GetResources(String)

Находит все ресурсы с заданным именем.

GetSystemResource(String)

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

GetSystemResourceAsStream(String)

Открытый для чтения ресурс с указанным именем из пути поиска, используемого для загрузки классов.

GetSystemResources(String)

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

JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
LoadClass(String)

Загружает класс с указанным двоичным именем.

LoadClass(String, Boolean)

Загружает класс с указанным двоичным именем.

LoadClassAsync(String)

Загрузчик классов — это объект, который отвечает за загрузку классов.

LoadClassAsync(String, Boolean)

Загрузчик классов — это объект, который отвечает за загрузку классов.

Notify()

Пробуждение одного потока, ожидающего на мониторе этого объекта.

(Унаследовано от Object)
NotifyAll()

Активирует все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
RegisterAsParallelCapable()

Регистрирует вызывающий объект как параллельный.

ResolveClass(Class)

Связывает указанный класс.

SetClassAssertionStatus(String, Boolean)

Задает требуемое состояние утверждения для именованного класса верхнего уровня в этом загрузчике классов и всех вложенных классов, содержащихся в нем.

SetDefaultAssertionStatus(Boolean)

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

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetPackageAssertionStatus(String, Boolean)

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

SetSigners(Class, Object[])

Задает подписывателей класса.

ToArray<T>()

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

(Унаследовано от Object)
Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

IJavaPeerable.Disposed()

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Загрузчик классов — это объект, который отвечает за загрузку классов.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Загрузчик классов — это объект, который отвечает за загрузку классов.

GetJniTypeName(IJavaPeerable)

Загрузчик классов — это объект, который отвечает за загрузку классов.

Применяется к