クラスConstantCallSite

java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.ConstantCallSite

public non-sealed class ConstantCallSite extends CallSite
ConstantCallSiteは、永続的で決して変更できないターゲットを持つCallSiteです。 ConstantCallSiteにリンクされたinvokedynamic命令は、そのコール・サイトのターゲットに永続的にバインドされます。
導入されたバージョン:
1.7
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
     
    永続的なターゲットを持つコール・サイトを作成します。
    protected
    ConstantCallSite(MethodType targetType, MethodHandle createTargetHook)
    永続的なターゲットを持つコール・サイトを作成します(コール・サイト自体にバインドされる場合があります)。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このコール・サイトの永続的なターゲットを返します。
    コール・サイトのターゲット・メソッドを返しますが、これは、ConstantCallSitefinalフィールドのように振る舞います。
    final void
    常にUnsupportedOperationExceptionをスローします。

    クラスで宣言されたメソッド CallSite

    type
    修飾子と型
    メソッド
    説明
    このコール・サイトのターゲットの型を返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • ConstantCallSite

      public ConstantCallSite(MethodHandle target)
      永続的なターゲットを持つコール・サイトを作成します。
      パラメータ:
      target - このコール・サイトに永続的に関連付けるターゲット
      スロー:
      NullPointerException - 提案されたターゲットがnullの場合
    • ConstantCallSite

      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 - フック関数からスローされるその他なにか
  • メソッドの詳細