Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.ClassLoader
Каждый Class
объект содержит ссылку на ClassLoader
это определило это (§20.3.7). Всякий раз, когда исполнимый код Java должен использовать класс, который еще не был загружен, loadClass
метод вызывается для загрузчика класса класса, содержащего рассматриваемый код.
Объекты класса для классов массива не создаются загрузчиками класса, но создаются автоматически как требуется Средой выполнения Java. Загрузчик класса для класса массива, как возвращено getClassLoader
метод класса Class
(§20.3.7), то же самое как загрузчик класса для его типа элемента; если тип элемента является типом примитива, то у класса массива нет никакого загрузчика класса.
Загрузчики класса могут обычно использоваться менеджерами безопасности (§20.17), чтобы указать на домены безопасности: два класса могут полагавший быть "дружественными" или "связанными" друг с другом, только если они были определены тем же самым загрузчиком класса.
public abstract classClassLoader
{ protectedClassLoader
() throws SecurityException; protected abstract ClassloadClass
(String name, boolean resolve)
throws ClassNotFoundException; protected final ClassdefineClass
(byte data[], int offset, int length)
throws NullPointerException, IndexOutOfBoundsException, ClassFormatError; protected final voidresolveClass
(Class c)
throws NullPointerException; protected final ClassfindSystemClass
(String name)
throws ClassNotFoundException; }
20.14.1 protected
ClassLoader
() throws SecurityException
Этот конструктор вызывается для каждого недавно создаваемого загрузчика класса. Поскольку класс ClassLoader
abstract
, не возможно создать новый экземпляр класса ClassLoader
непосредственно; однако, каждый конструктор для подкласса ClassLoader
обязательно вызывает этого конструктора, явно или неявно, прямо или косвенно.
Весь этот конструктор делает должен осуществить проверку защиты: если есть менеджер безопасности, checkCreateClassLoader
метод (§20.17.10) вызывают.
20.14.2 protected abstract Class
loadClass
(String name,
boolean link)
throws ClassNotFoundException
Каждый подкласс ClassLoader
это не самостоятельно абстрактно, должен обеспечить реализацию метода loadClass
.
Общий контракт loadClass
это, данное name
из класса это любой возвращается Class
объект для класса или бросков a ClassNotFoundException
.
Если a Class
объект состоит в том, чтобы быть возвращен и link
true
, тогда Class
объект должен быть соединен (§12.3, §20.14.4) прежде, чем он будет возвращен.
В большинстве случаев это мудро для подкласса ClassLoader
(§20.14), чтобы реализовать loadClass
метод как a synchronized
метод.
20.14.3 protected final Class
defineClass
(byte data[],
int offset, int length)
throws NullPointerException, IndexOutOfBoundsException, ClassFormatError
Этот метод может использоваться загрузчиком класса, чтобы определить новый класс.
Байты в массиве data
в позициях offset
через offset+length-1
должен иметь формат допустимого файла класса как определено Спецификацией виртуальной машины Java.
Если data
null
, тогда a NullPointerException
бросается.
IndexOutOfBoundsException
бросается, если какое-либо следующее является истиной:
Если обозначенные байты
data
не составляйте допустимое определение класса, тогда a ClassFormatError
бросается. Иначе, этот метод создает и возвращает a Class
возразите как описано по условию байтам20.14.4 protected final void
resolveClass
(Class c)
throws NullPointerException
Это (обманчиво названный) метод может использоваться загрузчиком класса, чтобы соединить (§12.3, §20.14.4) класс.
Если c
null
, тогда a NullPointerException
бросается.
Если Class
объект c
был уже соединен, тогда этот метод просто возвращается.
Иначе, класс соединяется как описано в §12.3.
20.14.5 protected final Class
findSystemClass
(String name)
throws ClassNotFoundException
Этот метод может использоваться загрузчиком класса, чтобы определить местоположение класса, у которого нет никакого загрузчика класса. Это включает встроенные классы такой как java.lang.Object
, так же как классы, что реализация узла может удержать, например, локальную файловую систему.
Данный name
из класса, этого метода, как loadClass
метод, любой возвраты Class
объект для класса или бросков a ClassNotFoundException
.
Содержание | Предыдущий | Следующий | Индекс
Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com