IMethodHandleInfo 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다.
[Android.Runtime.Register("java/lang/invoke/MethodHandleInfo", "", "Java.Lang.Invoke.IMethodHandleInfoInvoker", ApiSince=26)]
public interface IMethodHandleInfo : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/lang/invoke/MethodHandleInfo", "", "Java.Lang.Invoke.IMethodHandleInfoInvoker", ApiSince=26)>]
type IMethodHandleInfo = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 특성
- 구현
설명
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. 직접 메서드 핸들을 해독하려면 를 호출 Lookup#revealDirect Lookup.revealDirect
합니다. <h1>"directmh">Direct Method Handles</h1> A <em>직접 메서드 handle</em> 은 중간 인수 바인딩 또는 기타 변환 없이 메서드, 생성자 또는 필드를 나타냅니다. 직접 메서드 핸들에서 참조하는 메서드, 생성자 또는 필드를 em>기본 멤버</em이라고 <합니다>. 직접 메서드 핸들은 상수에 대한 CONSTANT_MethodHandle
명령을 실행하여 ldc
다음과<>>같은 방법으로 <얻을 수 있습니다. (Java Virtual Machine 사양, 섹션 4.4.8 및 5.4.3을 참조하세요.) <리튬>와 같은 Lookup#findVirtual Lookup.findVirtual
조회 팩터리 메서드 중 하나를 호출하여 메서드 핸들에 기호 참조를 resolve. 기호 참조는 클래스, 이름 문자열 및 형식으로 구성됩니다. <li>팩터리 메서드 Lookup#unreflect Lookup.unreflect
를 호출하거나 Lookup#unreflectSpecial Lookup.unreflectSpecial
를 메서드 핸들로 변환 Method
합니다. <li>팩터리 메서드 Lookup#unreflectConstructor Lookup.unreflectConstructor
를 호출하여 를 Constructor
메서드 핸들로 변환합니다. <li>팩터리 메서드 Lookup#unreflectGetter Lookup.unreflectGetter
를 호출하거나 Lookup#unreflectSetter Lookup.unreflectSetter
를 메서드 핸들로 변환 Field
합니다. </ul>
<h1>크래킹<에 대한 제한/h1> 적절한 Lookup
개체를 지정하면 직접 메서드 핸들을 해독하여 기본 메서드, 생성자 또는 필드에 대한 기호 참조를 복구할 수 있습니다. 대상 메서드 핸들을 Lookup
만들거나 동등한 메서드 핸들을 다시 만들 수 있는 충분한 액세스 권한이 있는 개체를 통해 크래킹을 수행해야 합니다.
기본 메서드가 호출자를 구분하는 경우 직접 메서드 핸들은 생성에 사용되는 조회 개체의 특정 호출자 클래스인 java.lang.invoke.MethodHandles.Lookup#lookupClass() 조회 클래스에 "바인딩"됩니다. 기본 메서드가 public(예: Class.forName
)인 경우에도 다른 조회 클래스를 사용하여 이 메서드 핸들을 해독하지 못합니다.
조회 개체 일치의 요구 사항은 예기치 않은 scope 기호 정보(또는 호출자 바인딩)가 있는 메서드 핸들의 잘못된 표시를 신뢰할 수 있는 프로그램에 대해 "빠른 실패" 동작을 제공합니다. 를 사용하여 java.lang.invoke.MethodHandles#reflectAs
이 제한을 재정의합니다.
<h1>"refkinds">Reference kinds</h1> Lookup Factory 메서드는 메서드, 생성자 및 필드에 대한 모든 주요 사용 사례에 해당합니다. 이러한 사용 사례는 다음과 <같이 작은 정수로 구분할 수 있습니다. table border=1 cellpadding=5 summary="reference kinds"><tr><th>reference kind</th th>><설명 이름</th><> scope</th><th member</th><th>>behavior</th></tr<>tr td<>1
<>/td><tdREF_getField
<>/td><td><class
td/td<>td td>FT f;
</td td>(T) this.f;
><</td></tr tr>><<td><2
/td td>REF_getStatic
><</td><td tdclass
> 또는 interface
</td td>><static
<br<>FT f;
/td><td<>(T) C.f;
/td<>/tr tr<>><td3
></td><td><REF_putField
/td><td><class
/td><td><FT f;
/><td>this.f = x;
</td></Tr><tr td><4
/td><td><REF_putStatic
/td><td>class
< brFT f;
<>/td>><static
<td><tdC.f = arg;
></td></tr tr<<>>td><5
/td><td<REF_invokeVirtual
>/td td<class
>></td td<>/td td<>T m(A*);
/td><td(T) this.m(arg*);
<>/td></tr tr tr<>><td><6
/td td>><REF_invokeStatic
</td td>><class
또는 interface
</td td>static
<<>br><T m(A*);
/td><td>(T) C.m(arg*);
</td></tr tr>><<td><7
/td><td><REF_invokeSpecial
/td><td>class
또는 interface
</td><td><T m(A*);
/td td>><<(T) super.m(arg*);
/td></tr ><tr><td>8
</td><td>REF_newInvokeSpecial
</td><td>class
</td><td><C(A*);
/td><>new C(arg*);
</td></tr tr>><<td><9
/td><td td>REF_invokeInterface
</td><td><interface
/td><td><T m(A*);
/td td></td(T) this.m(arg*);
></td></tr></table ><>
1.8에 추가되었습니다.
에 대한 Java 설명서입니다 java.lang.invoke.MethodHandleInfo
.
이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.
속성
DeclaringClass |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |
Handle |
기본 Android 개체의 JNI 값을 가져옵니다. (다음에서 상속됨 IJavaObject) |
IsVarArgs |
기본 멤버가 가변 arity 메서드 또는 생성자인지 확인합니다. |
JniIdentityHashCode |
|
JniManagedPeerState |
관리되는 피어의 상태입니다. (다음에서 상속됨 IJavaPeerable) |
JniPeerMembers |
멤버 액세스 및 호출 지원. (다음에서 상속됨 IJavaPeerable) |
MethodType |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |
Modifiers |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |
Name |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |
PeerReference |
JniObjectReference 래핑된 Java 개체 instance 의 를 반환합니다. (다음에서 상속됨 IJavaPeerable) |
ReferenceKind |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |
메서드
Disposed() |
instance 삭제되었을 때 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
DisposeUnlessReferenced() |
이 instance 대한 미해결 참조가 없으면 를 호출 |
Finalized() |
instance 완료되면 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
ReferenceKindToString(ReferenceKind) |
위의 표에 정의된 대로 지정된 참조 종류의 설명이 포함된 이름을 반환합니다. |
RefKindIsField(ReferenceKind) |
이 멤버는 더 이상 사용되지 않습니다. |
RefKindIsValid(ReferenceKind) |
이 멤버는 더 이상 사용되지 않습니다. |
RefKindName(ReferenceKind) |
이 멤버는 더 이상 사용되지 않습니다. |
ReflectAs(Class, MethodHandles+Lookup) |
기본 멤버를 메서드, 생성자 또는 필드 개체로 반영합니다. |
SetJniIdentityHashCode(Int32) |
에서 반환 |
SetJniManagedPeerState(JniManagedPeerStates) |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. (다음에서 상속됨 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
에서 반환 |
ToString(ReferenceKind, Class, String, MethodType) |
기호 참조의 네 부분으로 지정된 에 대한 |
UnregisterFromRuntime() |
런타임이 이후 Java.Interop.JniRuntime+JniValueManager.PeekValue 호출에서 반환되지 않도록 이 instance 등록을 취소합니다. (다음에서 상속됨 IJavaPeerable) |
확장 메서드
JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
JavaCast<TResult>(IJavaObject) |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |
GetJniTypeName(IJavaPeerable) |
직접 메서드 핸들을 해당 인접 기호 부분으로 크래킹하여 얻은 기호 참조입니다. |