ClassLoader.DefineClass Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя. | Описание |
|---|---|
| DefineClass(Byte[], Int32, Int32) |
Устаревшие.
Преобразует массив байтов в экземпляр класса |
| DefineClass(String, ByteBuffer, ProtectionDomain) |
Преобразует объект |
| DefineClass(String, Byte[], Int32, Int32) |
Преобразует массив байтов в экземпляр класса |
| DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
Преобразует массив байтов в экземпляр класса |
DefineClass(Byte[], Int32, Int32)
Внимание!
deprecated
Преобразует массив байтов в экземпляр класса Class.
[Android.Runtime.Register("defineClass", "([BII)Ljava/lang/Class;", "")]
[System.Obsolete("deprecated")]
protected Java.Lang.Class? DefineClass(byte[]? b, int off, int len);
[<Android.Runtime.Register("defineClass", "([BII)Ljava/lang/Class;", "")>]
[<System.Obsolete("deprecated")>]
member this.DefineClass : byte[] * int * int -> Java.Lang.Class
Параметры
- b
- Byte[]
Байты, составляющие данные класса. Байты в позициях offoff+len-1 должны иметь формат допустимого файла класса, как определено <в разделе ">Спецификация< виртуальной машины Java/cite>".
- off
- Int32
Смещение начала в b данных класса
- len
- Int32
Длина данных класса
Возвращаемое значение
Class Объект, созданный из указанных данных класса
- Атрибуты
Исключения
Значение , если classRep не содержит допустимый класс.
Значение offset if , length или значение offset + length больше длины classRep.
Комментарии
Преобразует массив байтов в экземпляр класса Class.
Class Прежде чем его можно будет использовать, необходимо устранить. Этот метод не рекомендуется использовать в пользу версии, которая принимает двоичное имя в качестве первого аргумента и более безопасна.
Этот элемент считается нерекомендуемым. Заменено #defineClass(String, byte[], int, int) defineClass(String, byte[], int, int)
Документация по Java для java.lang.ClassLoader.defineClass(byte[], int, int).
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
DefineClass(String, ByteBuffer, ProtectionDomain)
Преобразует объект java.nio.ByteBuffer ByteBuffer в экземпляр класса Classс заданным ProtectionDomain.
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass(string? name, Java.Nio.ByteBuffer? b, Java.Security.ProtectionDomain? protectionDomain);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;", "")>]
member this.DefineClass : string * Java.Nio.ByteBuffer * Java.Security.ProtectionDomain -> Java.Lang.Class
Параметры
- name
- String
Ожидаемое двоичное имя. класса или null , если он не известен
Байты, составляющие данные класса. Байты из позиций b.position()b.position() + b.limit() -1 должны иметь формат допустимого файла класса, как определено <в cite>The Java Virtual Machine Specification</cite>.
- protectionDomain
- ProtectionDomain
Класс ProtectionDomain или null.
Возвращаемое значение
Class Объект, созданный из данных и ProtectionDomain.
- Атрибуты
Исключения
Значение , если b не содержит допустимый класс.
Значение , если className не равно имени класса, содержащегося в b.
Комментарии
Преобразует объект java.nio.ByteBuffer ByteBuffer в экземпляр класса Classс заданным ProtectionDomain. Если задано ProtectionDomainnull, то домен защиты по умолчанию будет назначен классу, как указано в документации.#defineClass(String, byte[], int, int) Прежде чем класс можно будет использовать, его необходимо разрешить.
Правила первого класса, определенного в пакете, определяющий набор сертификатов для пакета, ограничения имен классов и определенный пакет класса идентичны указанным в документации #defineClass(String, byte[], int, int, ProtectionDomain).
Вызов этого метода формы cl.defineClass(name,bBuffer,pd) дает точно тот же результат, что и операторы.
...<br> byte[] temp = new byte[bBuffer.{@link java.nio.ByteBuffer#remaining remaining}()];<br> bBuffer.{@link java.nio.ByteBuffer#get(byte[]) get}(temp);<br> return {@link #defineClass(String, byte[], int, int, ProtectionDomain) cl.defineClass}(name, temp, 0, temp.length, pd);<br>
Добавлено в версии 1.5.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
DefineClass(String, Byte[], Int32, Int32)
Преобразует массив байтов в экземпляр класса Class.
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BII)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass(string? name, byte[]? b, int off, int len);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BII)Ljava/lang/Class;", "")>]
member this.DefineClass : string * byte[] * int * int -> Java.Lang.Class
Параметры
- name
- String
Ожидаемое двоичное имя класса или null если не известно
- b
- Byte[]
Байты, составляющие данные класса. Байты в позициях offoff+len-1 должны иметь формат допустимого файла класса, как определено <в разделе ">Спецификация< виртуальной машины Java/cite>".
- off
- Int32
Смещение начала в b данных класса
- len
- Int32
Длина данных класса
Возвращаемое значение
Объект Class , созданный из указанных данных класса.
- Атрибуты
Исключения
Значение , если classRep не содержит допустимый класс.
Значение offset if , length или значение offset + length больше длины classRep.
Комментарии
Преобразует массив байтов в экземпляр класса Class.
Class Прежде чем его можно будет использовать, необходимо устранить.
Этот метод назначает значение по умолчанию java.security.ProtectionDomain ProtectionDomain только что определенному классу. Фактически предоставляется ProtectionDomain тот же набор разрешений, возвращаемых при java.security.Policy#getPermissions(java.security.CodeSource) Policy.getPolicy().getPermissions(new CodeSource(null, null)) вызове. Домен защиты по умолчанию создается при первом вызове #defineClass(String, byte[], int, int) defineClassи повторно используется при последующих вызовах.
Чтобы назначить определенный ProtectionDomain класс, используйте #defineClass(String, byte[], int, int, java.security.ProtectionDomain) defineClass метод, который принимает ProtectionDomain в качестве одного из его аргументов.
Этот метод определяет пакет в этом загрузчике класса, соответствующем пакету Class (если такой пакет еще не определен в этом загрузчике класса). Имя определенного пакета является производным от двоичного имени класса, указанного массивом байтов b. Другие свойства определенного пакета, как указано в Package.
Добавлено в версии 1.1.
Документация по Java для java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int).
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)
Преобразует массив байтов в экземпляр класса Classс заданным ProtectionDomain.
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass(string? name, byte[]? b, int off, int len, Java.Security.ProtectionDomain? protectionDomain);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;", "")>]
member this.DefineClass : string * byte[] * int * int * Java.Security.ProtectionDomain -> Java.Lang.Class
Параметры
- name
- String
Ожидаемое двоичное имя класса или null если не известно
- b
- Byte[]
Байты, составляющие данные класса. Байты в позициях offoff+len-1 должны иметь формат допустимого файла класса, как определено <в разделе ">Спецификация< виртуальной машины Java/cite>".
- off
- Int32
Смещение начала в b данных класса
- len
- Int32
Длина данных класса
- protectionDomain
- ProtectionDomain
Класс ProtectionDomain
Возвращаемое значение
Class Объект, созданный из данных и ProtectionDomain.
- Атрибуты
Исключения
Значение , если classRep не содержит допустимый класс.
Значение offset if , length или значение offset + length больше длины classRep.
Значение , если className не равно имени класса, содержащегося в classRep.
Комментарии
Преобразует массив байтов в экземпляр класса Classс заданным ProtectionDomain.
Если задано ProtectionDomainnull, то домен защиты по умолчанию будет назначен классу, как указано в документации.#defineClass(String, byte[], int, int) Прежде чем класс можно будет использовать, его необходимо разрешить.
Первый класс, определенный в пакете, определяет точный набор сертификатов, которые должны содержать все последующие классы, определенные в этом пакете. Набор сертификатов для класса получается из java.security.CodeSource CodeSource класса в ProtectionDomain пределах класса. Все классы, добавленные в этот пакет, должны содержать один и тот же набор сертификатов или SecurityException будет создан. Обратите внимание, что если name это nullтак, эта проверка не выполняется. Всегда следует передать двоичное имя класса, который вы определяете, а также байты. Это гарантирует, что класс, который вы определяете, действительно является классом, который вы считаете, это.
Этот метод определяет пакет в этом загрузчике класса, соответствующем пакету Class (если такой пакет еще не определен в этом загрузчике класса). Имя определенного пакета является производным от двоичного имени класса, указанного массивом байтов b. Другие свойства определенного пакета, как указано в Package.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.