修飾子 | コンストラクタ | 説明 |
---|---|---|
|
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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。