Язык

ClassLoader.DefineClass Метод

Определение

Перегрузки

Имя. Описание
DefineClass(Byte[], Int32, Int32)
Устаревшие.

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

DefineClass(String, ByteBuffer, ProtectionDomain)

Преобразует объект java.nio.ByteBuffer ByteBuffer в экземпляр класса Classс заданным ProtectionDomain.

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

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

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

Преобразует массив байтов в экземпляр класса Classс заданным 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
ByteBuffer

Байты, составляющие данные класса. Байты из позиций 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.

Документация по Java для java.lang.ClassLoader.defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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.

Документация по Java для java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain).

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

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