VarHandle クラス

定義

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

[Android.Runtime.Register("java/lang/invoke/VarHandle", ApiSince=33, DoNotGenerateAcw=true)]
public abstract class VarHandle : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/VarHandle", ApiSince=33, DoNotGenerateAcw=true)>]
type VarHandle = class
    inherit Object
継承
VarHandle
属性

注釈

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。 このような変数へのアクセスは、プレーンな読み取り/書き込みアクセス、揮発性の読み取り/書き込みアクセス、比較と設定など、さまざまな <em>アクセス モード</em> でサポートされています。

VarHandles は不変であり、表示状態はありません。 VarHandles をユーザーがサブクラス化することはできません。

VarHandle には、<ul><li>a #varType variable type T、この VarHandle によって参照されるすべての変数の型、および <>li の#coordinateTypes coordinate typesCT1, CT2, ..., CTnリストがあります。この VarHandle によって参照される変数を共同で検索する em>座標式</em> の型。< </ul> 変数型と座標型はプリミティブ型または参照型であり、オブジェクトによって Class 表されます。 座標の種類の一覧が空の場合があります。

または java.lang.invoke.MethodHandles.Lookup lookup VarHandle インスタンスを生成するファクトリ メソッドは、サポートされている変数型と座標型のリストを文書化します。

各アクセス モードは、アクセス モード用にという名前のシグネチャポリモーフィック メソッド<である 1 つの <em>アクセス モード メソッド/em> に関連付けられます。 VarHandle インスタンスでアクセス モード メソッドが呼び出されると、呼び出しの最初の引数は、変数にアクセスするオブジェクトを正確に示す座標式です。 呼び出しの末尾の引数は、アクセス モードの重要度の値を表します。 たとえば、さまざまな比較および設定または比較/交換アクセス モードでは、変数の期待値と新しい値に対して 2 つの末尾引数が必要です。

アクセス モード メソッドの呼び出しに対する引数のアリティと型は静的にチェックされません。 代わりに、各アクセス モード メソッドは、 のMethodTypeインスタンスとして表される を指定#accessModeType(AccessMode) access mode typeします。これは、引数が動的にチェックされるメソッド シグネチャの一種として機能します。 アクセス モード型は、VarHandle インスタンスの座標型と、アクセス モードの重要度の値の型に関して仮パラメーター型を提供します。 アクセス モード型では、多くの場合、VarHandle インスタンスの変数型に関して戻り値の型も提供されます。 VarHandle インスタンスでアクセス モード メソッドが呼び出される場合、呼び出しサイトのシンボリック型記述子、呼び出しに対する引数の実行時の型、および戻り値の実行時の型は、アクセス モードの種類で指定された型と一致する必要があります。 一致が失敗すると、ランタイム例外がスローされます。

たとえば、アクセス モード メソッド#compareAndSetは、レシーバーが座標型と変数型CT1, ..., CTnTを持つ VarHandle インスタンスである場合、そのアクセス モードの種類が であることを(CT1 c1, ..., CTn cn, T expectedValue, T newValue)boolean指定します。 VarHandle インスタンスが配列要素にアクセスでき、その座標型が String[]int であり、変数型が であると Stringします。 この VarHandle インスタンスの アクセス モードの種類 compareAndSet は になります (String[] c1, int c2, String expectedValue, String newValue)boolean。 このような VarHandle インスタンスは、 および アクセス配列要素によって MethodHandles#arrayElementVarHandle(Class) array factory method 次のように生成される場合があります。

{@code
            String[] sa = ...
            VarHandle avh = MethodHandles.arrayElementVarHandle(String[].class);
            boolean r = avh.compareAndSet(sa, 10, "expected", "new");
            }

アクセス モードは、原子性と整合性のプロパティを制御します。 <em>Plain</em> 読み取り (get) および書き込み (set) アクセスは、参照と最大 32 ビットのプリミティブ値に対してのみビットごとのアトミックであることが保証され、実行中のスレッド以外のスレッドに対して監視可能な順序制約は課されません。 <em>Opaque</em> 演算は、同じ変数へのアクセスに関してビットごとのアトミックで、一貫して順序付けられます。 不透明なプロパティに従うだけでなく、<em>Acquire</em> モードの読み取りと後続のアクセスは、em>Release</em> モードの書き込みと以前のアクセスに一致<した後に順序付けされます。 Acquire プロパティと Release プロパティに従うだけでなく、すべての <em>Volatile</em> 操作は互いに完全に順序付けられます。

アクセス モードは、次のカテゴリにグループ化されます。 <ul><li>読み取りアクセス モード。これは、指定されたメモリ順序付け効果の下で変数の値を取得します。 このグループに属する対応するアクセス モード メソッドのセットは、、、#getVolatile getVolatile#getAcquire getAcquire#getOpaque getOpaqueの各メソッド#get getで構成されます。 <li>は、指定されたメモリ順序付け効果の下で変数の値を設定する書き込みアクセス モードです。 このグループに属する対応するアクセス モード メソッドのセットは、、、#setVolatile setVolatile#setRelease setRelease#setOpaque setOpaqueの各メソッド#set setで構成されます。 <li>アトミック更新アクセス モード。たとえば、指定されたメモリ順序付け効果の下で変数の値をアトミックに比較して設定します。 このグループに属する対応するアクセス モード メソッドのセットは、 の各メソッド#compareAndSet compareAndSet#weakCompareAndSet weakCompareAndSet#getAndSet getAndSet#getAndSetAcquire getAndSetAcquire#weakCompareAndSetPlain weakCompareAndSetPlain#weakCompareAndSetRelease weakCompareAndSetRelease#getAndSetRelease getAndSetRelease#weakCompareAndSetAcquire weakCompareAndSetAcquire#compareAndExchangeAcquire compareAndExchangeAcquire#compareAndExchange compareAndExchange#compareAndExchangeRelease compareAndExchangeReleaseで構成されます。 <li>数値アトミック更新アクセス モード。たとえば、指定されたメモリ順序付け効果の下で変数の値をアトミックに取得して設定します。 このグループに属する対応するアクセス モード メソッドのセットは、ビットごとのアトミック更新アクセス モード (たとえば、指定されたメモリ順序付け効果の下で変数の値をアトミックに取得してビットごとの OR) を実行するメソッド #getAndAdd getAndAdd、<#getAndAddAcquire getAndAddAcquire#getAndAddRelease getAndAddReleaseli>で構成されます。 このグループに属する対応するアクセス モード メソッドのセットは、 の各メソッド#getAndBitwiseOr getAndBitwiseOr#getAndBitwiseAndAcquire getAndBitwiseAndAcquire#getAndBitwiseOrAcquire getAndBitwiseOrAcquire#getAndBitwiseAnd getAndBitwiseAnd#getAndBitwiseXorRelease getAndBitwiseXorRelease#getAndBitwiseOrRelease getAndBitwiseOrRelease#getAndBitwiseAndRelease getAndBitwiseAndRelease#getAndBitwiseXor getAndBitwiseXor#getAndBitwiseXorAcquire getAndBitwiseXorAcquireで構成されます。 </ul>

または java.lang.invoke.MethodHandles.Lookup lookup VarHandle インスタンスを生成するファクトリ メソッドは、サポートされているアクセス モードのセットを文書化します。これには、変数の型と変数が読み取り専用かどうかに基づく制限の文書化も含まれます。 アクセス モードがサポートされていない場合、呼び出し時に対応するアクセス モード メソッドによって が UnsupportedOperationExceptionスローされます。 ファクトリ メソッドでは、アクセス モード メソッドによってスローされる可能性がある、宣言されていない例外を追加で文書化する必要があります。 アクセス モードはすべての #get get VarHandle インスタンスでサポートされており、対応するメソッドは を UnsupportedOperationExceptionスローしません。 VarHandle が読み取り専用変数 (フィールドなど final ) を参照している場合、書き込み、アトミック更新、数値アトミック更新、ビットごとのアトミック更新アクセス モードはサポートされず、対応するメソッドは をスロー UnsupportedOperationExceptionします。 および を除getsetく読み取り/書き込みアクセス モード (サポートされている場合) は、参照型とすべてのプリミティブ型にアトミック アクセスを提供します。 ファクトリ メソッドのドキュメントで特に明記されていない限り、アクセス モードgetset (サポートされている場合) は、参照型とすべてのプリミティブ型にアトミック アクセスを提供します。ただし、32 ビット プラットフォームの 場合doubleは を除longきます。

アクセス モードは、変数の宣言サイトで指定されたメモリ順序付け効果をオーバーライドします。 たとえば、アクセス モードを使用してgetフィールドにアクセスする VarHandle は、そのフィールドが 宣言されている場合でも、アクセス モード</em> によって指定された <em>フィールドにvolatileアクセスします。 混合アクセスを実行する場合は、Java メモリ モデルで驚くべき結果が得られる可能性があるため、細心の注意を払う必要があります。

さまざまなアクセス モードで変数へのアクセスをサポートするだけでなく、メモリ フェンス メソッドと呼ばれる静的メソッドのセットも提供され、メモリ順序をきめ細かく制御できます。

Java 言語仕様では、ロック、フィールド、VarHandles の使用などによって生じる制約の影響を受け、プログラムのソース コードで明らかな順序とは異なる順序で実行されたかのように、 volatile 他のスレッドが操作を観察できます。 静的メソッド 、 #fullFence fullFence#loadLoadFence loadLoadFence#acquireFence acquireFence#releaseFence releaseFenceおよび #storeStoreFence storeStoreFenceを使用して、制約を適用することもできます。 特定のアクセス モードの場合と同様に、それらの仕様は、"並べ替え" の欠如という点で表現されます。フェンスが存在しない場合に発生する可能性がある監視可能な順序付け効果です。 アクセス モードメソッドとメモリフェンスメソッドの仕様のより正確なフレージングは、Java 言語仕様の今後の更新に伴う可能性があります。

<h1>アクセス モード メソッドのコンパイル呼び出し/h1> アクセス モード メソッド<に名前を付ける Java メソッド呼び出し式は、Java ソース コードから VarHandle を呼び出すことができます。 ソース コードの観点から、これらのメソッドは任意の引数を受け取ることができ、ポリモーフィックな結果 (表現されている場合) は任意の戻り値の型にキャストできます。 正式には、これはアクセス モード メソッドに可変のアリティObject引数とObject戻り値の型 (戻り値の型がポリモーフィックの場合) を与えることによって実現されますが、em シグネチャポリモーフィズム</em> と呼ばれる<>追加の品質があり、この自由な呼び出しを JVM 実行スタックに直接接続します。

仮想メソッドの場合と同様に、アクセス モード メソッドへのソース レベルの呼び出しは命令に invokevirtual コンパイルされます。 さらに異常に、コンパイラは実際の引数型を記録する必要があり、引数に対してメソッド呼び出し変換を実行しない可能性があります。 代わりに、独自の変換されていない型に従ってスタックにプッシュする命令を生成する必要があります。 VarHandle オブジェクト自体は、引数の前にスタックにプッシュされます。 コンパイラは、引数と戻り値の型を記述するシンボリック型記述子を使用してアクセス モード メソッドを呼び出す命令を生成 invokevirtual します。

完全なシンボリック型記述子を発行するには、コンパイラで戻り値の型 (ポリモーフィックの場合) も決定する必要があります。 これは、メソッド呼び出し式が存在する場合は キャストに基づいています。呼び出しが式の場合は それ以外 Object の場合は 、呼び出しがステートメントの場合は それ以外 void の場合は に基づいています。 キャストはプリミティブ型にできます (ただし、 は使用できません void)。

コーナーケースとして、キャストされていない null 引数には のシンボリック型記述子 java.lang.Voidが与えられます。 null 参照以外の型の参照がないため、型VoidVoidのあいまいさは無害です。

<h1>"invoke">アクセス モード メソッド<の呼び出しの実行/h1> 命令が初めて invokevirtual 実行されるときは、命令内の名前をシンボル的に解決し、メソッド呼び出しが静的に有効であることを確認することによってリンクされます。 これは、アクセス モード メソッドの呼び出しにも適用されます。 この場合、コンパイラによって出力されるシンボリック型記述子で正しい構文がチェックされ、含まれている名前が解決されます。 したがって、 invokevirtual シンボリック型記述子が構文的に整形式であり、型が存在する限り、アクセス モード メソッドを呼び出す命令は常にリンクします。

invokevirtualがリンク後に実行されると、受信する VarHandle のアクセス モードの種類が JVM によって最初にチェックされ、シンボリック型記述子と一致することが確認されます。 型の一致が失敗した場合は、呼び出し元が呼び出しているアクセス モード メソッドが、呼び出される個々の VarHandle に存在しないことを意味します。

アクセス モード メソッドの呼び出しは、 の MethodHandle#invoke呼び出しのように動作します。ここで、受信メソッド ハンドルは VarHandle インスタンスを先頭引数として受け取ります。 具体的には、次のようになります。ここで、 } は {access-modeアクセス モードのメソッド名に対応しています。

{@code
            VarHandle vh = ..
            R r = (R) vh.{access-mode}(p1, p2, ..., pN);
            }

は次のように動作します。

{@code
            VarHandle vh = ..
            VarHandle.AccessMode am = VarHandle.AccessMode.valueFromMethodName("{access-mode}");
            MethodHandle mh = MethodHandles.varHandleExactInvoker(
                                  am,
                                  vh.accessModeType(am));

            R r = (R) mh.invoke(vh, p1, p2, ..., pN)
            }

(剰余アクセス モードメソッドは の Throwableスローを宣言しません)。 このようにすると、次の記述と同じ結果が得られます。

{@code
            MethodHandle mh = MethodHandles.lookup().findVirtual(
                                  VarHandle.class,
                                  "{access-mode}",
                                  MethodType.methodType(R, p1, p2, ..., pN));

            R r = (R) mh.invokeExact(vh, p1, p2, ..., pN)
            }

ここで、目的のメソッド型はシンボリック型記述子であり MethodHandle#invokeExact 、 が実行されます。ターゲットを呼び出す前に、ハンドルは必要に応じて参照キャストを適用し、同様に box、unbox、 MethodHandle#asType asType または拡大プリミティブ値を適用します ( も MethodHandles#varHandleInvoker参照)。

より簡潔に言えば、このような動作は次の動作に相当します。

{@code
            VarHandle vh = ..
            VarHandle.AccessMode am = VarHandle.AccessMode.valueFromMethodName("{access-mode}");
            MethodHandle mh = vh.toMethodHandle(am);

            R r = (R) mh.invoke(p1, p2, ..., pN)
            }

この場合、メソッド ハンドルは VarHandle インスタンスにバインドされます。

<h1>呼び出しチェック</h1> 一般的なプログラムでは、VarHandle アクセス モードの種類の一致は通常成功します。 しかし、一致が失敗した場合、JVM は を WrongMethodTypeExceptionスローします。

したがって、静的に型指定されたプログラムでリンケージ エラーとして表示される可能性があるアクセス モードの種類の不一致は、VarHandles を使用するプログラムで動的 WrongMethodTypeException として表示される可能性があります。

アクセス モードの型には "ライブ" Class オブジェクトが含まれているため、メソッド型の一致では型名とクラス ローダーの両方が考慮されます。 したがって、VarHandle VH が 1 つのクラス ローダーで作成され、別L2の クラス ローダーL1で使用されている場合でも、VarHandle アクセス モード メソッドの呼び出しは型セーフです。これは、 で解決された呼び出し元のシンボリック型記述子が、 でL2L1解決された元の呼び出し先メソッドのシンボリック型記述子と照合されるためです。 の解決 L1 は、 が作成され VH 、そのアクセス モードの種類が割り当てられるときに発生し、 の L2 解決は命令がリンクされたときに invokevirtual 発生します。

型記述子チェックとは別に、VarHandles の変数にアクセスする機能は無制限です。 VarHandle が、その変数にアクセスできるクラスによって非パブリック変数に形成されている場合、結果の VarHandle は、その変数への参照を受け取る任意の呼び出し元が任意の場所で使用できます。

リフレクション メソッドが呼び出されるたびにアクセスがチェックされる Core Reflection API とは異なり、VarHandle の作成時に VarHandle アクセス チェックが実行されます。 したがって、VarHandles を非パブリック変数または非パブリック クラスの変数に対して、通常はシークレットにしておく必要があります。 信頼されていないコードからの使用が無害でない限り、信頼されていないコードに渡さないでください。

<h1>VarHandle の作成</h1> Java コードでは、そのコードからアクセスできる任意のフィールドに直接アクセスする VarHandle を作成できます。 これは、 と呼ばれる java.lang.invoke.MethodHandles.Lookup MethodHandles.Lookup反射型の機能ベースの API を使用して行われます。 たとえば、 から非静的フィールドの VarHandle を取得 java.lang.invoke.MethodHandles.Lookup#findVarHandle Lookup.findVarHandleできます。 Core Reflection API オブジェクト java.lang.invoke.MethodHandles.Lookup#unreflectVarHandle Lookup.unreflectVarHandleからの変換メソッドもあります。

保護されたフィールド メンバーへのアクセスは、アクセスするクラスまたはそのサブクラスの 1 つの受信者のみに制限されます。また、アクセスするクラスは、保護されたメンバーの定義クラスのサブクラス (またはパッケージ兄弟) である必要があります。 VarHandle が、現在のパッケージの外部にある宣言クラスの保護された非静的フィールドを参照している場合、受信側引数はアクセスするクラスの型に絞り込まれます。

<h1>VarHandles と Core Reflection API</h1> 間の相互運用 API の java.lang.invoke.MethodHandles.Lookup Lookup ファクトリ メソッドを使用すると、Core Reflection API オブジェクトによって表されるフィールドは、動作に相当する VarHandle に変換できます。 たとえば、 を使用してjava.lang.invoke.MethodHandles.Lookup#unreflectVarHandle Lookup.unreflectVarHandle反射java.lang.reflect.Field Fieldを VarHandle に変換できます。 結果として得られる VarHandles は、通常、基になるフィールドへのより直接的で効率的なアクセスを提供します。

特殊なケースとして、Core Reflection API を使用してこのクラスのシグネチャポリモーフィック アクセス モード メソッドを表示すると、通常の非ポリモーフィック メソッドとして表示されます。 によって表示される java.lang.Class#getDeclaredMethod Class.getDeclaredMethod反射的な外観は、この API の特殊な状態の影響を受けません。 たとえば、 は、 java.lang.reflect.Method#getModifiers Method.getModifiers 同様に宣言されたメソッドに必要な修飾子ビット (この場合 nativevarargs ビットを含む) を正確に報告します。

反映されたメソッドと同様に、これらのメソッド (反映される場合) は、JNI 経由で、または を介して間接的に、 を介してjava.lang.reflect.Method#invoke java.lang.reflect.Method.invokejava.lang.invoke.MethodHandles.Lookup#unreflect Lookup.unreflect直接呼び出すことができます。 ただし、このようなリフレクション呼び出しでは、アクセス モードのメソッド呼び出しは発生しません。 このような呼び出しでは、必要な引数 (型 Object[]の 1 つ) が渡された場合、引数は無視され、 UnsupportedOperationExceptionがスローされます。

命令は任意のシンボリック型記述子で VarHandle アクセス モード メソッドをネイティブに呼び出すことができるため invokevirtual 、この反射ビューはバイトコードを介したこれらのメソッドの通常の表示と競合します。 したがって、これらのネイティブメソッドは、によって反射的に見 Class.getDeclaredMethodた場合、プレースホルダーのみと見なされ得る。

特定のアクセス モードの種類の呼び出し元メソッドを取得するには、 または を使用 java.lang.invoke.MethodHandles#varHandleExactInvoker します java.lang.invoke.MethodHandles#varHandleInvoker。 API は java.lang.invoke.MethodHandles.Lookup#findVirtual Lookup.findVirtual 、指定されたアクセス モードの種類に対してアクセス モード メソッドを呼び出すメソッド ハンドルを返すこともできます。これは と同等の動作 java.lang.invoke.MethodHandles#varHandleInvokerです。

<h1>VarHandles と Java ジェネリック間の相互運用/h1> Java ジェネリック<型で宣言されているフィールドなどの変数に対して VarHandle を取得できます。 Core Reflection API と同様に、VarHandle の変数型はソース レベル型の消去から構築されます。 VarHandle アクセス モード メソッドが呼び出されると、その引数の型、または戻り値のキャスト型がジェネリック型または型インスタンスになる場合があります。 これが発生した場合、コンパイラは命令のシンボリック型記述子 invokevirtual を構築するときに、それらの型を消去に置き換えます。

9 に追加されました。

java.lang.invoke.VarHandleJava ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

コンストラクター

VarHandle(IntPtr, JniHandleOwnership)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
JniPeerMembers

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

PeerReference

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
ThresholdClass

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

ThresholdType

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

メソッド

AccessModeType(VarHandle+AccessMode)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

AcquireFence()

フェンスの前の荷重が、フェンスの後の荷重と格納と共に並べ替えされないことを保証します。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
CompareAndExchange(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

CompareAndExchangeAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

CompareAndExchangeRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

CompareAndSet(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

CoordinateTypes()

この VarHandle の座標型を返します。

Dispose()

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
Dispose(Boolean)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
FullFence()

フェンスの前の読み込みと格納が、フェンスの後の荷重と格納と共に並べ替えされないようにします。

Get(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndAdd(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndAddAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndAddRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseAnd(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseAndAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseAndRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseOr(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseOrAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseOrRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseXor(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseXorAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndBitwiseXorRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndSet(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndSetAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetAndSetRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetOpaque(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetVolatile(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

IsAccessModeSupported(VarHandle+AccessMode)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションが判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
LoadLoadFence()

フェンスの前の荷重が、フェンスの後の荷重と共に順序変更されないようにします。

Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
ReleaseFence()

フェンスの前の読み込みと格納が、フェンスの後のストアで並べ替えされないようにします。

Set(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetOpaque(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

SetRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

SetVolatile(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

StoreStoreFence()

フェンスの前のストアが、フェンスの後のストアで並べ替えされないようにします。

ToArray<T>()

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
ToMethodHandle(VarHandle+AccessMode)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
VarType()

この VarHandle によって参照される変数の変数型を返します。

Wait()

現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。>

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。

(継承元 Object)
WeakCompareAndSet(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

WeakCompareAndSetAcquire(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

WeakCompareAndSetPlain(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

WeakCompareAndSetRelease(Object[])

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

明示的なインターフェイスの実装

IJavaPeerable.Disposed()

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
IJavaPeerable.Finalized()

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

GetJniTypeName(IJavaPeerable)

VarHandle は、静的フィールド、非静的フィールド、配列要素、またはオフヒープ データ構造のコンポーネントを含む、変数、またはパラメーターで定義された変数ファミリへの動的に厳密に型指定された参照です。

適用対象