CallSite 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
은 변수 MethodHandle
에 대한 보유자이며, 변수를 라고 합니다target
. invokedynamic
에 연결된 CallSite
명령은 사이트의 현재 대상에 대한 모든 호출을 위임합니다. 은 CallSite
여러 invokedynamic
지침과 연결되거나 none과 연결된 "자유 부동"일 수 있습니다. 어떤 경우든 해당 #dynamicInvoker 동적 호출자라는 연결된 메서드 핸들을 통해 호출될 수 있습니다.
CallSite
는 사용자가 직접 서브클래싱을 허용하지 않는 추상 클래스입니다. 인스턴스화되거나 서브클래스될 수 있는 3개의 즉각적인 구체적인 서브클래스가 있습니다. <ul><li>변경 가능한 대상이 필요하지 invokedynamic
않은 경우 ConstantCallSite 상수 호출 사이트를 통해 명령이 영구적으로 바인딩될 수 있습니다. <li>휘발성 변수 의미 체계가 있는 변경 가능한 대상이 필요한 경우 대상에 대한 업데이트가 다른 스레드에서 즉시 안정적으로 감시되어야 하므로 VolatileCallSite 휘발성 호출 사이트를 사용할 수 있습니다. <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));
}
}
</인용구>
에 대한 Java 설명서입니다 java.lang.invoke.CallSite
.
이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.
생성자
CallSite(IntPtr, JniHandleOwnership) |
|
속성
Class |
이 |
Handle |
기본 Android instance 대한 핸들입니다. (다음에서 상속됨 Object) |
JniIdentityHashCode |
|
JniPeerMembers |
|
PeerReference |
|
Target |
|
ThresholdClass |
|
ThresholdType |
|
메서드
Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 Object) |
Dispose() |
|
Dispose(Boolean) |
|
DynamicInvoker() |
이 호출 사이트에 연결된 invokedynamic 명령에 해당하는 메서드 핸들을 생성합니다. |
Equals(Object) |
다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다. (다음에서 상속됨 Object) |
GetHashCode() |
개체의 해시 코드 값을 반환합니다. (다음에서 상속됨 Object) |
JavaFinalize() |
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. (다음에서 상속됨 Object) |
Notify() |
이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다. (다음에서 상속됨 Object) |
NotifyAll() |
이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다. (다음에서 상속됨 Object) |
SetHandle(IntPtr, JniHandleOwnership) |
Handle 속성을 설정합니다. (다음에서 상속됨 Object) |
ToArray<T>() |
|
ToString() |
개체의 문자열 표현을 반환합니다. (다음에서 상속됨 Object) |
Type() |
이 호출 사이트의 대상 유형을 반환합니다. |
UnregisterFromRuntime() |
|
Wait() |
현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다. (다음에서 상속됨 Object) |
Wait(Int64) |
현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다. (다음에서 상속됨 Object) |
Wait(Int64, Int32) |
현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
IJavaPeerable.Disposed() |
|
IJavaPeerable.DisposeUnlessReferenced() |
|
IJavaPeerable.Finalized() |
|
IJavaPeerable.JniManagedPeerState |
|
IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
IJavaPeerable.SetPeerReference(JniObjectReference) |
|
확장 메서드
JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|