MethodHandles.Lookup Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа.
[Android.Runtime.Register("java/lang/invoke/MethodHandles$Lookup", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class MethodHandles.Lookup : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/MethodHandles$Lookup", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodHandles.Lookup = class
inherit Object
- Наследование
- Атрибуты
Комментарии
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. Дескрипторы методов не выполняют проверки доступа при их вызове, а при их создании. Поэтому при создании дескриптора метода необходимо применять ограничения доступа к дескриптору метода. Класс вызывающего абонента, к которому применяются эти ограничения, называется классом #lookupClass поиска.
Класс подстановки, которому необходимо создать дескриптор метода, будет вызывать #lookup MethodHandles.lookup
для создания фабрики для себя. Lookup
При создании объекта фабрики идентификатор класса подстановки определяется и безопасно сохраняется в объекте Lookup
. Затем класс подстановки (или его делегаты) может использовать фабричные методы в объекте Lookup
для создания дескрипторов методов для элементов, проверяемых доступом. Сюда входят все методы, конструкторы и поля, которые разрешены для класса подстановки, даже частные.
<h1>"lookups">Lookup Factory Methods</h1> Методы фабрики Lookup
в объекте соответствуют всем основным вариантам использования методов, конструкторов и полей. Каждый дескриптор метода, созданный фабричном методом, является функциональным эквивалентом определенного <поведения<> байт-кода em>. (Поведение байт-кода описано в разделе 5.4.3.5 спецификации виртуальной машины Java.) Ниже приведена сводка о соответствии между этими фабричные методы и поведением результирующего метода: <table border=1 cellpadding=5 summary="lookup method behaviors"><tr><th>"equiv">lookup expression</th><th>member</th><>bytecode behavior</th<>/tr<<>>td<java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)
>/td<>td<>FT f;
/td><><(T) this.f;
<>/tr><tr<>td<>java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)
/td<>td<static
>br<FT f;
>/td><td<(T) C.f;
>/td></tr>><<td<>java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)
/td><tdFT f;
<>/td><td<this.f = x;
>/td<>/tr td/tr>><<tdjava.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)
></td td<>><static
br><FT f;
/td td><C.f = arg;
/td<><>/tr><><td><java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)
/td><td><T m(A*);
/td><td><(T) this.m(arg*);
/td></tr<><>td><java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)
/td td<<>>static
br><T m(A*);
/td td<>(T) C.m(arg*);
/td><></tr>><<td><java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)
/td/td><td<T m(A*);
>/td td/td><td><(T) super.m(arg*);
/td<>/tr><td><java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)
/td><td><C(A*);
/td><td>new C(arg*);
</td></tr<><>td><java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)
/td td>><(static
)?<><br><FT f;
/td><td>(FT) aField.get(thisOrNull);
</td></tr<>td<java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)
><>/td><td>(static
)?<br><FT f;
/td><td>aField.set(thisOrNull, arg);
</td></tr<>td<java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)
><>/td><td>(static
)?<br><T m(A*);
/td><td><(T) aMethod.invoke(thisOrNull, arg*);
/td></tr><td><<>java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)
/td><tdC(A*);
></td td>(C) aConstructor.newInstance(arg*);
<></td></tr td/td/tr<<>>td<java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)
>/td><td>(static
)?<br><T m(A*);
/td><td><(T) aMethod.invoke(thisOrNull, arg*);
/td></tr></table>
Здесь типом C
является класс или интерфейс, в которых выполняется поиск элемента, который задокументирован как параметр с именем refc
в методах поиска. Тип MT
метода состоит из возвращаемого типа T
и последовательности типов A*
аргументов . Конструктор также имеет последовательность типов A*
аргументов и считается возвращать только что созданный объект типа C
. И MT
тип FT
поля задокументированы как параметр с именем type
. Формальный параметр this
расшифровывается как самоназвание типа C
; если он присутствует, он всегда является ведущим аргументом для вызова дескриптора метода. (В случае некоторых protected
членов this
может быть ограничен по типу классом подстановки; см. ниже.) Имя arg
обозначает все остальные аргументы дескриптора метода. В примерах кода для API отражения ядра имя thisOrNull
означает пустую ссылку, если метод или поле для доступа являются статическими, и this
в противном случае. Имена aMethod
, aField
и aConstructor
— это отражающие объекты, соответствующие заданным членам.
В случаях, когда заданный член имеет переменную arity (т. е. метод или конструктор), возвращаемый дескриптор метода также будет иметь значение MethodHandle#asVarargsCollector переменной arity. Во всех остальных случаях возвращаемый дескриптор метода будет иметь фиксированную arity. <p style="font-size:smaller;"><Em>Discussion:</em> Эквивалентность между дескрипторами метода поиска и базовыми членами класса и поведением байт-кода может разбиться несколькими способами: <ul style="font-size:smaller;"><Li>Если C
не является символически доступным из загрузчика класса подстановки, поиск по-прежнему может быть успешным, даже если нет эквивалентного выражения Java или константы с байт-кодом. <Li>Аналогичным образом, если T
или MT
не является символически доступным из загрузчика класса подстановки, поиск по-прежнему может быть успешным. Например, поиск и MethodHandle.invokeExact
MethodHandle.invoke
всегда будет успешным, независимо от запрошенного типа. <Li>Если установлен диспетчер безопасности, он может запретить поиск по разным причинам (см. ниже). Напротив, инструкция по ldc
константе CONSTANT_MethodHandle
не подлежит проверкам диспетчера безопасности. <Li>Если метод поиска имеет очень большой arity, создание дескриптора метода может завершиться ошибкой из-за того, что тип дескриптора метода имеет слишком много параметров. </ul>
<h1>"access">Проверка доступа</h1> Проверки доступа применяются в фабричные методы , когда создается дескриптор Lookup
метода. Это ключевое отличие от API отражения ядра, так как java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke
выполняет проверку доступа для каждого вызывающего объекта при каждом вызове.
Все проверки доступа начинаются с Lookup
объекта , который сравнивает записанный класс подстановки со всеми запросами на создание дескрипторов метода. Один Lookup
объект можно использовать для создания любого числа дескрипторов метода, проверяемых с помощью доступа, которые проверяются на соответствие одному классу поиска.
Объект Lookup
может использоваться совместно с другим доверенным кодом, например с протоколом метаобъекта. Общий Lookup
объект делегирует возможность создания дескрипторов методов для закрытых членов класса подстановки. Даже если привилегированный Lookup
код использует объект , проверка доступа ограничивается привилегиями исходного класса поиска.
Поиск может завершиться ошибкой, так как класс, содержащий его, недоступен для класса подстановки, отсутствует нужный член класса, или из-за того, что нужный член класса недоступен для класса подстановки, или потому, что объект подстановки недостаточно доверяет для доступа к члену. В любом из этих случаев ReflectiveOperationException
при попытке поиска будет выдано исключение . Точный класс будет одним из следующих: ul>li NoSuchMethodException — if a method is requested but does not exist <li>NoSuchFieldException — if a field is requested but does not exist <li>IllegalAccessException — if the member exists but a access проверка сбой </ul><<>
Как правило, условия, при которых дескриптор метода можно искать для метода M
, не являются более строгими, чем условия, при которых класс подстановки мог скомпилировать, проверить и разрешить вызов M
. Там, где виртуальная машина Java вызывает исключения, такие как NoSuchMethodError
, при поиске дескриптора метода обычно возникает соответствующее проверенное исключение, например NoSuchMethodException
. А эффект вызова дескриптора метода, полученного в результате поиска, в точности эквивалентен выполнению скомпилированного, проверенного и разрешенного вызова .M
То же самое относится и к полям и конструкторам. <p style="font-size:smaller;"><Em>Discussion:</em> Проверки доступа применяются только к именованным и отраженным методам, конструкторам и полям. Другие методы дескриптора, такие как MethodHandle#asType MethodHandle.asType
, не требуют проверки доступа и используются независимо от любого Lookup
объекта.
Если нужным элементом является protected
, применяются обычные правила виртуальной машины Java, включая требование о том, что класс подстановки должен находиться в том же пакете, что и нужный член, или должен наследовать этот элемент. (См. спецификацию виртуальной машины Java, разделы 4.9.2, 5.4.3.5 и 6.4.) Кроме того, если нужным элементом является нестатическое поле или метод в другом пакете, результирующий дескриптор метода может применяться только к объектам класса подстановки или одного из его подклассов. Это требование реализуется путем сужения типа ведущего this
параметра с C
(который обязательно будет суперклассом класса поиска) до самого класса подстановки.
Виртуальная машина Java предъявляет аналогичное требование к invokespecial
инструкции, что аргумент получателя должен соответствовать как разрешенный метод <em>, так и< /em> текущему классу. Опять же, это требование реализуется путем сужения типа ведущего параметра до результирующего дескриптора метода. (См. спецификацию виртуальной машины Java, раздел 4.10.1.9.)
Виртуальная машина Java представляет конструкторы и блоки статического инициализатора как внутренние методы со специальными именами ("<init>"
и "<clinit>"
). Внутренний синтаксис инструкций вызова позволяет ссылаться на такие внутренние методы, как если бы они были обычными методами, но средство проверки байт-кода виртуальной машины Java отклоняет их. При поиске такого внутреннего метода будет получен объект NoSuchMethodException
.
В некоторых случаях доступ между вложенными классами получается компилятором Java путем создания метода-оболочки для доступа к частному методу другого класса в том же объявлении верхнего уровня. Например, вложенный класс C.D
может получить доступ к закрытым членам в других связанных классах, таких как C
, C.D.E
или C.B
, но компилятору Java может потребоваться создать методы-оболочки в этих связанных классах. В таких случаях объект в Lookup
C.E
не сможет использовать эти закрытые члены. Обходным решением для этого ограничения является Lookup#in Lookup.in
метод , который может преобразовать поиск C.E
в любой из этих классов без специального повышения привилегий.
Доступ к данному объекту подстановки может быть ограничен в соответствии с его набором до подмножества элементов, обычно доступных для класса подстановки #lookupModes lookupModes
. Например, #publicLookup publicLookup
метод создает объект подстановки, которому разрешен доступ только к открытым членам в открытых классах. Метод #lookup lookup
, чувствительный к вызывающей объекту, создает объект подстановки с полными возможностями относительно его класса вызывающих объектов для эмуляции всех поддерживаемых поведений байт-кода. Кроме того, Lookup#in Lookup.in
метод может создать объект подстановки с меньшим количеством режимов доступа, чем исходный объект подстановки.
<p style="font-size:smaller;"> " privacc"><em>Обсуждение закрытого доступа:</em> Мы говорим, что подстановка имеет <em>private access</em> , если его #lookupModes режимы поиска включают возможность доступа к private
членам. Как описано в соответствующих методах в других местах, только подстановки с частным доступом обладают следующими возможностями: <ul style="font-size:smaller;"><li>access private fields, methods, and constructors класса <поиска li>create method handles, которые вызывают чувствительные к вызывающей стороны методы, такие как<Class.forName
li>create method handles , которые Lookup#findSpecial emulate invokespecial
инструкции <li>избежать проверок доступа к пакету для классов, доступных для класса <поиска li>createLookup#in delegated lookup objects
, которые имеют закрытый доступ к другим классам в том же члене <пакета /ul><p style="font-size: меньше;"> Каждое из этих разрешений является следствием того факта, что объект подстановки с закрытым доступом можно безопасно отследить до исходного класса, поведение байт-кода которого и разрешения на доступ к языку Java могут быть надежно определены и эмулированы дескрипторами методов.
<h1>"secmgr">Security manager interactions</h1> Хотя инструкции по байт-коду могут ссылаться только на классы в связанном загрузчике классов, этот API может искать методы в любом классе при условии, что ссылка на его Class
объект доступна. Такие ссылки на перекрестные загрузчики также возможны с помощью API отражения ядра, и их невозможно использовать в инструкциях байт-кода, таких как invokestatic
или getfield
. Существует API диспетчера безопасности java.lang.SecurityManager, позволяющий приложениям проверка такие ссылки на перекрестные загрузчики. Эти проверки применяются как к API, MethodHandles.Lookup
так и к API основного отражения (как показано в java.lang.Class Class
).
При наличии диспетчера безопасности подстановки участников подлежат дополнительным проверкам. Диспетчеру безопасности выполняется от одного до трех вызовов. Любой из этих вызовов может отказать в доступе java.lang.SecurityException SecurityException
, вызывая исключение . Определите smgr
как диспетчер безопасности, lookc
как класс поиска текущего объекта подстановки, как содержащий класс, refc
в котором выполняется поиск члена, и defc
как класс, в котором фактически определен член. Значение lookc
определяется как <em>not present</em,> если текущий объект поиска не имеет закрытого доступа. Вызовы выполняются в соответствии со следующими правилами: <ul><li><b>Шаг 1:</b> Если lookc
отсутствует, или если его загрузчик класса не совпадает с или предком загрузчика refc
класса , то SecurityManager#checkPackageAccess smgr.checkPackageAccess(refcPkg)
вызывается , где refcPkg
— пакет refc
. <li><b>Шаг 2:</b> Если полученный элемент не является открытым и lookc
отсутствует, вызывается SecurityManager#checkPermission smgr.checkPermission
параметр with RuntimePermission("accessDeclaredMembers")
. <li><b>Шаг 3:</b> Если полученный член не является открытым, а если lookc
отсутствует, а если defc
и refc
отличаются, вызывается SecurityManager#checkPackageAccess smgr.checkPackageAccess(defcPkg)
, где defcPkg
— пакет defc
. </ul> Проверки безопасности выполняются после прохождения других проверок доступа. Таким образом, приведенные выше правила предполагают открытый член или доступ к которому осуществляется из класса подстановки, который имеет права на доступ к члену.
<h1>"callsens"Методы<, чувствительные к> вызываемому объекту/h1> Небольшое количество методов Java имеет специальное свойство, называемое чувствительностью вызывающего объекта. Метод <em>, чувствительный к< вызывающей стороне/em> , может вести себя по-разному в зависимости от идентификатора его непосредственного вызывающего объекта.
Если запрашивается дескриптор метода для метода, чувствительного к вызывающей стороне, применяются общие правила поведения байт-кода, но класс подстановки учитывается особым образом. Результирующий дескриптор метода ведет себя так, как если бы он был вызван из инструкции, содержащейся в классе подстановки, поэтому метод, чувствительный к вызывающему объекту, обнаруживает класс подстановки. (Напротив, вызывающий дескриптор метода игнорируется.) Таким образом, в случае с методами, чувствительными к вызывающему объекту, различные классы подстановки могут привести к по-разному ведя дескрипторов методов.
В случаях, когда объектом подстановки является #publicLookup publicLookup()
, или какой-либо другой объект поиска без закрытого доступа, класс подстановки игнорируется. В таких случаях невозможно создать дескриптор метода, зависящий от вызывающего объекта, доступ запрещен, а поиск завершается сбоем IllegalAccessException
с . <p style="font-size:smaller;"><em>Discussion:</em> Например, метод java.lang.Class#forName(String) Class.forName(x)
, чувствительный к вызывающему объекту, может возвращать различные классы или вызывать различные исключения в зависимости от загрузчика класса, который его вызывает. Общедоступный поиск завершится ошибкой, так как нет разумного Class.forName
способа определить поведение байт-кода. <p style="font-size:smaller;"> Если дескрипторы метода кэша приложения используются для широкого общего доступа, следует использовать для publicLookup()
их создания. Если имеется поиск Class.forName
, он завершится ошибкой, и приложение должно предпринять соответствующие действия в этом случае. Возможно, более поздний поиск, возможно, во время вызова метода начальной загрузки, может включать конкретное удостоверение вызывающего объекта, что делает метод доступным. <p style="font-size:smaller;"> Функция MethodHandles.lookup
чувствительна к вызывающей стороны, что позволяет создать безопасную основу для поиска. Почти все другие методы в API JSR 292 используют объекты поиска для проверка запросов на доступ.
Документация по Java для java.lang.invoke.MethodHandles.Lookup
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.
Поля
Package |
Устаревшие..
Одноразрядная маска, представляющая |
Private |
Устаревшие..
Одноразрядная маска, представляющая |
Protected |
Устаревшие..
Одноразрядная маска, представляющая |
Public |
Устаревшие..
Одноразрядная маска, представляющая |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
JniPeerMembers |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. |
PeerReference |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
Bind(Object, String, MethodType) |
Создает дескриптор метода с ранней привязкой для нестатических методов. |
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
Dispose() |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
Dispose(Boolean) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
FindConstructor(Class, MethodType) |
Создает дескриптор метода, который создает объект и инициализирует его с помощью конструктора указанного типа. |
FindGetter(Class, String, Class) |
Создает дескриптор метода, предоставляющий доступ на чтение к нестатическому полю. |
FindSetter(Class, String, Class) |
Создает дескриптор метода, предоставляющий доступ на запись к нестатическому полю. |
FindSpecial(Class, String, MethodType, Class) |
Создает дескриптор метода с ранней привязкой для виртуального метода. |
FindStatic(Class, String, MethodType) |
Создает дескриптор метода для статического метода. |
FindStaticGetter(Class, String, Class) |
Создает дескриптор метода, предоставляющий доступ на чтение к статическому полю. |
FindStaticSetter(Class, String, Class) |
Создает дескриптор метода, предоставляющий доступ на запись к статическому полю. |
FindStaticVarHandle(Class, String, Class) |
Создает Объект VarHandle, предоставляющий доступ к статическому полю |
FindVarHandle(Class, String, Class) |
Создает Объект VarHandle, предоставляющий доступ к нестатическому полю |
FindVirtual(Class, String, MethodType) |
Создает дескриптор метода для виртуального метода. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
In(Class) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
LookupClass() |
Указывает, какой класс выполняет поиск. |
LookupModes() |
Указывает, какие классы защиты доступа членов этот объект подстановки может создавать. |
Notify() |
Пробуждение одного потока, ожидающего на мониторе этого объекта. (Унаследовано от Object) |
NotifyAll() |
Активирует все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
RevealDirect(MethodHandle) |
Взломает дескриптор прямого метода, созданный этим объектом подстановки или аналогичным. |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
ToArray<T>() |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
Unreflect(Method) |
Создает прямой дескриптор метода для m, если класс подстановки имеет разрешение. |
UnreflectConstructor(Constructor) |
Создает дескриптор метода для отраженного конструктора. |
UnreflectGetter(Field) |
Создает дескриптор метода, предоставляющий доступ на чтение отраженного поля. |
UnreflectSetter(Field) |
Создает дескриптор метода, предоставляющий доступ на запись в отраженное поле. |
UnreflectSpecial(Method, Class) |
Создает дескриптор метода для отраженного метода. |
UnreflectVarHandle(Field) |
Создает Объект VarHandle, предоставляющий доступ к отраженному полю |
UnregisterFromRuntime() |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
Wait() |
Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>. (Унаследовано от Object) |
Wait(Int64) |
Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенное средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. |
GetJniTypeName(IJavaPeerable) |
Объект <или em<> подстановки —>это фабрика для создания дескрипторов методов, когда для создания требуется проверка доступа. |