MutableCallSite 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
A MutableCallSite 는 CallSite 대상 변수가 일반 필드처럼 동작하는 경우입니다.
[Android.Runtime.Register("java/lang/invoke/MutableCallSite", ApiSince=26, DoNotGenerateAcw=true)]
public class MutableCallSite : Java.Lang.Invoke.CallSite
[<Android.Runtime.Register("java/lang/invoke/MutableCallSite", ApiSince=26, DoNotGenerateAcw=true)>]
type MutableCallSite = class
inherit CallSite
- 상속
- 특성
설명
A MutableCallSite 는 CallSite 대상 변수가 일반 필드처럼 동작하는 경우입니다.
invokedynamic 대리인에 MutableCallSite 연결된 명령은 사이트의 현재 대상에 대한 모든 호출을 나타냅니다. 변경 가능한 호출 사이트의 CallSite#dynamicInvoker 동적 호출자도 사이트의 현재 대상에 대한 각 호출을 위임합니다.
다음은 메서드 핸들 체인에 상태 변수를 도입하는 변경 가능한 호출 사이트의 예입니다. <-- JavaDocExamplesTest.testMutableCallSite --><blockquote>
{@code
MutableCallSite name = new MutableCallSite(MethodType.methodType(String.class));
MethodHandle MH_name = name.dynamicInvoker();
MethodType MT_str1 = MethodType.methodType(String.class);
MethodHandle MH_upcase = MethodHandles.lookup()
.findVirtual(String.class, "toUpperCase", MT_str1);
MethodHandle worker1 = MethodHandles.filterReturnValue(MH_name, MH_upcase);
name.setTarget(MethodHandles.constant(String.class, "Rocky"));
assertEquals("ROCKY", (String) worker1.invokeExact());
name.setTarget(MethodHandles.constant(String.class, "Fred"));
assertEquals("FRED", (String) worker1.invokeExact());
// (mutation can be continued indefinitely)
}
</blockquote>
한 번에 여러 위치에서 동일한 통화 사이트를 사용할 수 있습니다. <blockquote>
{@code
MethodType MT_str2 = MethodType.methodType(String.class, String.class);
MethodHandle MH_cat = lookup().findVirtual(String.class,
"concat", methodType(String.class, String.class));
MethodHandle MH_dear = MethodHandles.insertArguments(MH_cat, 1, ", dear?");
MethodHandle worker2 = MethodHandles.filterReturnValue(MH_name, MH_dear);
assertEquals("Fred, dear?", (String) worker2.invokeExact());
name.setTarget(MethodHandles.constant(String.class, "Wilma"));
assertEquals("WILMA", (String) worker1.invokeExact());
assertEquals("Wilma, dear?", (String) worker2.invokeExact());
}
</blockquote>
<em>대상 값의 비동기화:</em> 변경 가능한 호출 사이트의 대상에 대한 쓰기는 다른 스레드가 업데이트된 값을 인식하도록 강요하지 않습니다. 업데이트된 호출 사이트를 기준으로 적절한 동기화 작업을 수행하지 않는 스레드는 이전 대상 값을 캐시하고 새 대상 값의 사용을 무기한 연기할 수 있습니다. 개체 필드에 적용된 Java 메모리 모델의 일반적인 결과입니다.
자주 업데이트되는 대상 값의 경우 VolatileCallSite 휘발성 호출 사이트를 대신 사용하는 것이 좋습니다.
에 대한 java.lang.invoke.MutableCallSiteJava 설명서
이 페이지의 일부는 만들고 공유한 작업을 기반으로 하며 에 설명된 조건에 따라 사용됩니다.
생성자
| 속성 | Description |
|---|---|
| MutableCallSite(IntPtr, JniHandleOwnership) |
A |
| MutableCallSite(MethodHandle) |
초기 대상 메서드 핸들을 사용하여 호출 사이트 개체를 만듭니다. |
| MutableCallSite(MethodType) |
지정된 메서드 형식을 사용하여 빈 호출 사이트 개체를 만듭니다. |
속성
| 속성 | Description |
|---|---|
| Class |
이 |
| Handle |
기본 Android 인스턴스에 대한 핸들입니다. (다음에서 상속됨 Object) |
| JniIdentityHashCode |
interop 런타임에 의해 이 Java 피어에 할당된 ID 해시 코드를 가져옵니다. (다음에서 상속됨 Object) |
| JniManagedPeerState |
A |
| JniPeerMembers |
A |
| PeerReference |
이 Java 피어에 대한 JNI 개체 참조를 가져옵니다. (다음에서 상속됨 Object) |
| Target |
호출 사이트의 대상 메서드를 반환합니다. 이 메서드는 기본 필드 |
| ThresholdClass |
A |
| ThresholdType |
A |
메서드
| 속성 | Description |
|---|---|
| Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
A |
| Dispose() |
이 Java 피어에서 보유한 리소스를 해제합니다. (다음에서 상속됨 Object) |
| Dispose(Boolean) |
이 Java 피어에서 보유한 리소스를 해제합니다. (다음에서 상속됨 Object) |
| DisposeUnlessReferenced() |
A |
| DynamicInvoker() |
이 호출 사이트에 연결된 명령에 해당하는 |
| Equals(Object) |
A |
| Equals(Object) |
다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다. (다음에서 상속됨 Object) |
| GetHashCode() |
개체에 대한 해시 코드 값을 반환합니다. (다음에서 상속됨 Object) |
| JavaFinalize() |
사용되지 않음.
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. (다음에서 상속됨 Object) |
| Notify() |
이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다. (다음에서 상속됨 Object) |
| NotifyAll() |
이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다. (다음에서 상속됨 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle 속성을 설정합니다. (다음에서 상속됨 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
A |
| ToArray<T>() |
이 Java 배열 래퍼에서 관리되는 배열을 만듭니다. (다음에서 상속됨 Object) |
| ToString() |
개체의 문자열 표현을 반환합니다. (다음에서 상속됨 Object) |
| Type() |
이 호출 사이트의 대상 유형을 반환합니다. (다음에서 상속됨 CallSite) |
| UnregisterFromRuntime() |
interop 런타임에서 이 Java 피어의 등록을 취소합니다. (다음에서 상속됨 Object) |
| Wait() |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받><거나 ><>중단/종료<합니다.> (다음에서 상속됨 Object) |
| Wait(Int64, Int32) |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 >중단/<종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다. (다음에서 상속됨 Object) |
| Wait(Int64) |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 >중단/<종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
| 속성 | Description |
|---|---|
| IJavaPeerable.Disposed() |
A |
| IJavaPeerable.Finalized() |
A |
| IJavaPeerable.JniObjectReferenceControlBlock |
A |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
A |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
A |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
A |
확장명 메서드
| 속성 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
인스턴스 |
| JavaAs<TResult>(IJavaPeerable) |
형식 |
| JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
| JavaCast<TResult>(IJavaObject) |
A |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
형식 |