CallSite Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Un CallSite
es un titular de una variable MethodHandle
, que se denomina 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
- Herencia
- Derivado
- Atributos
Comentarios
Un CallSite
es un titular de una variable MethodHandle
, que se denomina target
. Una invokedynamic
instrucción vinculada a un CallSite
delegado de todas las llamadas al destino actual del sitio. Un CallSite
puede estar asociado a varias invokedynamic
instrucciones, o puede ser "flotante libre", asociado a ninguno. En cualquier caso, se puede invocar a través de un identificador de método asociado denominado su #dynamicInvoker invocador dinámico.
CallSite
es una clase abstracta que no permite la subclases directa por parte de los usuarios. Tiene tres subclases concretas inmediatas que se pueden crear instancias o subclases. <ul><li>Si no se requiere un destino mutable, una invokedynamic
instrucción puede estar enlazada permanentemente por medio de un sitio de llamada constante ConstantCallSite. <li>Si se requiere un destino mutable que tiene semántica variable volátil, ya que las actualizaciones del destino deben ser testigos inmediatamente y confiable por otros subprocesos, se puede usar un sitio de llamada volátil VolatileCallSite. <li>De lo contrario, si se requiere un destino mutable, se puede usar un sitio de llamada mutableCallSite mutable. </ul>
Un sitio de llamada no constante puede ser <revinculado<>/em> cambiando su destino. El nuevo destino debe tener el mismo tipo MethodHandle#type() que el destino anterior. Por lo tanto, aunque un sitio de llamada se puede volver a vincular a una serie de destinos sucesivos, no puede cambiar su tipo.
Este es un ejemplo de uso de sitios de llamada y métodos de arranque que vinculan cada sitio de llamada dinámico para imprimir sus argumentos: <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>
Documentación de Java para java.lang.invoke.CallSite
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.
Constructores
CallSite(IntPtr, JniHandleOwnership) |
Un |
Propiedades
Class |
Devuelve la clase en tiempo de ejecución de este |
Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
JniIdentityHashCode |
Un |
JniPeerMembers |
Un |
PeerReference |
Un |
Target |
Un |
ThresholdClass |
Un |
ThresholdType |
Un |
Métodos
Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
Dispose() |
Un |
Dispose(Boolean) |
Un |
DynamicInvoker() |
Genera un identificador de método equivalente a una instrucción invokedynamic que se ha vinculado a este sitio de llamada. |
Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
GetHashCode() |
Devuelve un valor de código hash del objeto. (Heredado de Object) |
JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
ToArray<T>() |
Un |
ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
Type() |
Devuelve el tipo de destino de este sitio de llamada. |
UnregisterFromRuntime() |
Un |
Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<>< (Heredado de Object) |
Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
IJavaPeerable.Disposed() |
Un |
IJavaPeerable.DisposeUnlessReferenced() |
Un |
IJavaPeerable.Finalized() |
Un |
IJavaPeerable.JniManagedPeerState |
Un |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Un |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Un |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Un |
Métodos de extensión
JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
JavaCast<TResult>(IJavaObject) |
Un |
GetJniTypeName(IJavaPeerable) |
Un |