다음을 통해 공유


MethodHandles.Lookup.FindConstructor(Class, MethodType) 메서드

정의

지정된 형식의 생성자를 사용하여 개체를 만들고 초기화하는 메서드 핸들을 생성합니다.

[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

매개 변수

refc
Class

메서드에 액세스하는 클래스 또는 인터페이스

type
MethodType

수신기 인수가 생략된 메서드의 형식 및 void 반환 형식

반환

원하는 메서드 핸들

특성

설명

지정된 형식의 생성자를 사용하여 개체를 만들고 초기화하는 메서드 핸들을 생성합니다. 메서드 핸들의 매개 변수 형식은 생성자의 매개 변수 형식이며 반환 형식은 생성자의 클래스에 대한 참조가 됩니다. 생성자와 모든 인수 형식은 조회 개체에 액세스할 수 있어야 합니다.

요청된 형식에는 반환 형식 void이 있어야 합니다. (이는 생성자 형식 설명자에 대한 JVM의 처리와 일치합니다.)

반환된 메서드 핸들은 생성자의 변수 arity 한정자 비트(0x0080)가 설정된 경우에만 MethodHandle#asVarargsCollector 변수 arity를 갖습니다.

반환된 메서드 핸들이 호출되면 생성자의 클래스가 초기화되지 않은 경우 초기화됩니다.

<b>예제:</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>

에 대한 java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상