次の方法で共有


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

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

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

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

たとえば、アクセス モード メソッド#compareAndSetは、そのレシーバーが座標型と変数TCT1, ..., CTnを持つ 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> 読み取り () および書き込み (getset) アクセスは、参照および最大 32 ビットのプリミティブ値に対してのみビットごとのアトミックであることが保証され、実行中のスレッド以外のスレッドに対して監視可能な順序制約は適用されません。 <em>Opaque</em> 演算は、同じ変数へのアクセスに関してビットごとのアトミックでコヒーレントに並べられます。 不透明なプロパティに従うだけでなく、<em>Acquire</em> モードの読み取りと後続のアクセスは、em>Release</em> モードの書き込みと以前のアクセスに一致<した後に順序付けられます。 Acquire プロパティと Release プロパティに従うことに加えて、すべての <em>Volatile</em> 操作は、お互いに対して完全に順序付けられます。

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

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

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

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

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

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

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

完全なシンボリック型記述子を発行するには、コンパイラも戻り値の型を決定する必要があります (ポリモーフィックの場合)。 これは、メソッド呼び出し式にキャストが存在する場合、または呼び出しが式の場合、またはObjectvoid呼び出しがステートメントの場合に基づいています。 キャストはプリミティブ型である可能性があります (ただし、できません 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)
            }

ここで、目的のメソッド型はシンボリック型記述子であり、a MethodHandle#invokeExact は実行されます。ターゲットを呼び出す前に、ハンドルは必要に応じて参照キャストを適用し、同様にプリミティブ値をボックス化、ボックス化解除、 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 アクセス モード メソッドの呼び出しは型セーフです。これは、解決されたL2呼び出し元のシンボリック型記述子が、解決された元の呼び出し先メソッドのシンボリック型記述子L1と照合されるためです。 解決 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.reflect.Field Field は 、次を使用して java.lang.invoke.MethodHandles.Lookup#unreflectVarHandle Lookup.unreflectVarHandleVarHandle に変換できます。 結果として得られる VarHandles は、通常、基になるフィールドへのより直接的で効率的なアクセスを提供します。

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

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

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

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

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

9 に追加されました。

の Java ドキュメントjava.lang.invoke.VarHandle

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

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

適用対象