CallSite Класс

Определение

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

[Android.Runtime.Register("java/lang/invoke/CallSite", ApiSince=26, DoNotGenerateAcw=true)]
public abstract class CallSite : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/CallSite", ApiSince=26, DoNotGenerateAcw=true)>]
type CallSite = class
    inherit Object
Наследование
CallSite
Производный
Атрибуты

Комментарии

Является CallSite держателем для переменной MethodHandle, которая называется ее target. Инструкция, связанная invokedynamic с , CallSite делегирует все вызовы к текущему целевому объекту сайта. Объект CallSite может быть связан с несколькими invokedynamic инструкциями или может быть "свободно плавающим", не связанным ни с одной из них. В любом случае его можно вызвать с помощью связанного дескриптора метода, который называется динамическим вызовом #dynamicInvoker.

CallSite — это абстрактный класс, который не допускает прямое подклассирование пользователями. Он содержит три непосредственных конкретных подкласса, которые могут быть либо экземплярами, либо подклассами. <ul><li>Если изменяемый целевой invokedynamic объект не требуется, инструкция может быть постоянно привязана с помощью сайта вызова константы ConstantCallSite. <Li>Если требуется изменяемый целевой объект с семантикой переменных переменных, так как обновления целевого объекта должны быть немедленно и надежно засвидетельствованы другими потоками, может использоваться сайт вызовов VolatileCallSite volatile. <Li В>противном случае, если требуется изменяемый целевой объект, можно использовать изменяемый сайт вызова MutableCallSite. </ul>

Неконстантный сайт вызовов может быть <>перелиняться</em> путем изменения целевого объекта. Новый целевой объект должен иметь тот же тип MethodHandle#type(), что и предыдущий целевой объект. Таким образом, хотя сайт вызова можно повторно связать с рядом последовательных целевых объектов, он не может изменить свой тип.

Ниже приведен пример использования сайтов вызовов и методов начальной загрузки, которые связывают каждый динамический сайт вызова для вывода его аргументов: <blockquote>

{@code
            static void test() throws Throwable {
                // THE FOLLOWING LINE IS PSEUDOCODE FOR A JVM INSTRUCTION
                InvokeDynamic[#bootstrapDynamic].baz("baz arg", 2, 3.14);
            }
            private static void printArgs(Object... args) {
              System.out.println(java.util.Arrays.deepToString(args));
            }
            private static final MethodHandle printArgs;
            static {
              MethodHandles.Lookup lookup = MethodHandles.lookup();
              Class thisClass = lookup.lookupClass();  // (who am I?)
              printArgs = lookup.findStatic(thisClass,
                  "printArgs", MethodType.methodType(void.class, Object[].class));
            }
            private static CallSite bootstrapDynamic(MethodHandles.Lookup caller, String name, MethodType type) {
              // ignore caller and name, but match the type:
              return new ConstantCallSite(printArgs.asType(type));
            }
            }

</blockquote>

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

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

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

CallSite(IntPtr, JniHandleOwnership)

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

Свойства

Class

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

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

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

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

PeerReference

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

ThresholdClass

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

ThresholdType

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

Методы

Clone()

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

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Создает дескриптор метода, эквивалентный инструкции invokedynamic, связанной с этим сайтом вызова.

Equals(Object)

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

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

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

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

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

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

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

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

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

(Унаследовано от Object)
SetHandle(IntPtr, JniHandleOwnership)

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

(Унаследовано от Object)
ToArray<T>()

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

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

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

Возвращает тип целевого объекта этого сайта вызова.

UnregisterFromRuntime()

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.><

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

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

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

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

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

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

IJavaPeerable.Disposed()

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

GetJniTypeName(IJavaPeerable)

Является CallSite держателем для переменной MethodHandle, которая называется ее target.

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