| 修飾子 | コンストラクタと説明 |
|---|---|
|
ConstantCallSite(MethodHandle target)
永続的なターゲットを持つコール・サイトを作成します。
|
protected |
ConstantCallSite(MethodType targetType, MethodHandle createTargetHook)
永続的なターゲットを持つコール・サイトを作成します(コール・サイト自体にバインドされる場合があります)。
|
| 修飾子と型 | メソッドと説明 |
|---|---|
MethodHandle |
dynamicInvoker()
このコール・サイトの永続的なターゲットを返します。
|
MethodHandle |
getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、
ConstantCallSiteのfinalフィールドのように振る舞います。 |
void |
setTarget(MethodHandle ignore)
常に
UnsupportedOperationExceptionをスローします。 |
public ConstantCallSite(MethodHandle target)
target - このコール・サイトに永続的に関連付けるターゲットNullPointerException - 提案されたターゲットがnullの場合protected ConstantCallSite(MethodType targetType, MethodHandle createTargetHook) throws Throwable
コール・サイトの構築中、(MethodHandle) createTargetHook.invoke(this)の形式の呼出しを行った場合と同様に、createTargetHookが呼び出されて実際のターゲットが生成されます。
ユーザー・コードはサブクラスのコンストラクタ内でそのようなアクションを直接実行することはできませんが、これは、ConstantCallSiteコンストラクタから戻る前にターゲットが固定される必要があるからです。
フックはこのコール・サイトをターゲット・メソッド・ハンドルにバインドするよう指示されるので、通常のアクションはsomeTarget.bindTo(this)になります。ただし、フックはどのようなアクションでも自由に行えます(コール・サイトを無視して定数ターゲットを返すなど)。
フックから返される結果は、コール・サイトと厳密に同じ型のメソッド・ハンドルでなければいけません。
フックが呼び出されている間、新しいConstantCallSiteオブジェクトは部分的に構築された状態になっています。この状態でgetTargetの呼び出しやターゲットを使用するその他の試みを行うと、IllegalStateExceptionが発行されます。typeメソッドを使ってコール・サイトの型を取得することは、どのような状況でも問題ありません。
targetType - このコール・サイトに永続的に関連付けるメソッド・ハンドルの型createTargetHook - コール・サイトのターゲットを生成するために(コール・サイト上で)呼び出すメソッド・ハンドルWrongMethodTypeException - 要求された引数でフックを呼び出せない場合、またはフックから返されたターゲットの型が指定されたtargetTypeでない場合NullPointerException - フックからnull値が返された場合ClassCastException - フックからMethodHandle以外の値が返された場合Throwable - フック関数からスローされるその他なにかpublic final MethodHandle getTarget()
ConstantCallSiteのfinalフィールドのように振る舞います。つまり、ターゲットは常に、このインスタンスを作成したコンストラクタ呼出しに渡される元の値です。getTarget、クラス: CallSiteIllegalStateException - ConstantCallSiteコンストラクタが完了していない場合ConstantCallSite, VolatileCallSite, CallSite.setTarget(java.lang.invoke.MethodHandle), getTarget(), MutableCallSite.getTarget(), VolatileCallSite.getTarget()public final void setTarget(MethodHandle ignore)
UnsupportedOperationExceptionをスローします。この種類のコール・サイトはターゲットを変更できません。setTarget、クラス: CallSiteignore - このコール・サイトに提案される新しいターゲット(無視される)UnsupportedOperationException - この種類のコール・サイトはターゲットを変更できないためCallSite.getTarget(), setTarget(java.lang.invoke.MethodHandle), MutableCallSite.setTarget(java.lang.invoke.MethodHandle), VolatileCallSite.setTarget(java.lang.invoke.MethodHandle)public final MethodHandle dynamicInvoker()
CallSite.dynamicInvokerの正しい実装となります。dynamicInvoker、クラス: CallSiteIllegalStateException - ConstantCallSiteコンストラクタが完了していない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.