MethodHandles.Lookup.FindConstructor(Class, MethodType) Método
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í.
Genera un identificador de método que crea un objeto y lo inicializa mediante el constructor del tipo especificado.
[Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle FindConstructor (Java.Lang.Class refc, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.FindConstructor : Java.Lang.Class * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle
Parámetros
- refc
- Class
clase o interfaz desde la que se accede al método
- type
- MethodType
el tipo del método, con el argumento receptor omitido y un tipo de valor devuelto void
Devoluciones
el identificador de método deseado
- Atributos
Comentarios
Genera un identificador de método que crea un objeto y lo inicializa mediante el constructor del tipo especificado. Los tipos de parámetro del identificador de método serán los del constructor, mientras que el tipo de valor devuelto será una referencia a la clase del constructor. El constructor y todos sus tipos de argumento deben ser accesibles para el objeto de búsqueda.
El tipo solicitado debe tener un tipo de valor devuelto de void
. (Esto es coherente con el tratamiento de JVM de descriptores de tipo constructor).
El identificador de método devuelto tendrá la aridad de variables MethodHandle#asVarargsCollector si y solo si se establece el bit modificador de arity de la variable del constructor (0x0080
).
Si se invoca el identificador de método devuelto, se inicializará la clase del constructor, si aún no se ha inicializado.
<b>Ejemplo:</b><blockquote>
{@code
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
...
MethodHandle MH_newArrayList = publicLookup().findConstructor(
ArrayList.class, methodType(void.class, Collection.class));
Collection orig = Arrays.asList("x", "y");
Collection copy = (ArrayList) MH_newArrayList.invokeExact(orig);
assert(orig != copy);
assertEquals(orig, copy);
// a variable-arity constructor:
MethodHandle MH_newProcessBuilder = publicLookup().findConstructor(
ProcessBuilder.class, methodType(void.class, String[].class));
ProcessBuilder pb = (ProcessBuilder)
MH_newProcessBuilder.invoke("x", "y", "z");
assertEquals("[x, y, z]", pb.command().toString());
}
</blockquote>
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.