修飾子 | コンストラクタと説明 |
---|---|
|
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
、クラス: CallSite
IllegalStateException
- ConstantCallSite
コンストラクタが完了していない場合ConstantCallSite
, VolatileCallSite
, CallSite.setTarget(java.lang.invoke.MethodHandle)
, getTarget()
, MutableCallSite.getTarget()
, VolatileCallSite.getTarget()
public final void setTarget(MethodHandle ignore)
UnsupportedOperationException
をスローします。この種類のコールサイトはターゲットを変更できません。setTarget
、クラス: CallSite
ignore
- このコールサイトに提案される新しいターゲット (無視される)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
、クラス: CallSite
IllegalStateException
- ConstantCallSite
コンストラクタが完了していない場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.