パッケージ jakarta.enterprise.inject

インターフェース Instance<T>

  • 型パラメーター:
    T - 必要な Bean 型
    すべてのスーパーインターフェース:
    IterableSE<T>Provider<T>
    すべての既知のサブインターフェース:
    SeContainer
    すべての既知の実装クラス:
    CDI

    public interface Instance<T>
    extends IterableSE<T>, Provider<T>

    アプリケーションが、必要な型と修飾子の指定された組み合わせで Bean のインスタンスを動的に取得できるようにします。

    特定の状況では、インジェクションはコンテキスト参照を取得するための最も便利な方法ではありません。例: 次の場合は使用できません。

    • Bean 型または修飾子が実行時に動的に変化する、または
    • デプロイによっては、型と修飾子を満たす Bean がない場合があります。
    • 特定の型のすべての Bean を反復処理します。

    これらの状況では、Instance のインスタンスが注入される可能性があります。

     @Inject
     Instance<PaymentProcessor> paymentProcessor;
     

    修飾子の任意の組み合わせをインジェクションポイントで指定できます。

     @Inject
     @PayBy(CHEQUE)
     Instance<PaymentProcessor> chequePaymentProcessor;
     

    または、@Any 修飾子を使用して、アプリケーションで修飾子を動的に指定できます。

     @Inject
     @Any
     Instance<PaymentProcessor> anyPaymentProcessor;
     

    注入された Instance の場合:

    • 必要な型は、インジェクションポイントで指定された型パラメーター
    • 必要な修飾子は、インジェクションポイントで指定された修飾子です。

    継承された Provider.get() メソッドは、必要な型と必要な修飾子に一致し、親 Instance が注入されたクラスへの注入に適格であるか、UnsatisfiedResolutionException または AmbiguousResolutionException をスローする一意の Bean のコンテキスト参照を返します。

     PaymentProcessor pp = chequePaymentProcessor.get();
     

    継承された Iterable.iterator() メソッドは、必要な型と必要な修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean のコンテキスト参照に対するイテレーターを返します。

     for (PaymentProcessor pp : anyPaymentProcessor)
         pp.test();
     
    作成者:
    Gavin King, John Ament, Martin Kouba
    関連事項:
    Provider.get(), Iterable.iterator(), AnnotationLiteral, TypeLiteral
    • ネストされたクラスのサマリー

      ネストされたクラス  
      修飾子と型 インターフェース 説明
      static interface Instance.Handle<T>
      このインターフェースは、コンテキスト参照ハンドルを表します。
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド   デフォルトメソッド  
      修飾子と型 メソッド 説明
      voiddestroy​(T instance)
      呼び出されると、Bean のスコープ型のアクティブコンテキストオブジェクトが Bean インスタンスの破棄をサポートしている場合、コンテナーはインスタンスを破棄します。
      Instance.Handle<T>getHandle()
      必要な型と修飾子を持ち、インジェクションに適格な Bean の初期化されたコンテキスト参照ハンドルを取得します。
      IterableSE<? extends Instance.Handle<T>>handles()
      必要な型と必要な修飾子を持ち、インジェクションの対象となるすべての Bean のコンテキスト参照ハンドルを反復処理できます。
      default StreamSE<? extends Instance.Handle<T>>handlesStream()
      Instance.Handle オブジェクトのストリームを返します。
      booleanisAmbiguous()
      必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が複数あるかどうかを判別します。
      default booleanisResolvable()
      必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が 1 つだけあるかどうかを判別します。
      booleanisUnsatisfied()
      必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean がないかどうかを判別します。
      <U extends T>
      Instance<U>
      select​(TypeLiteral<U> subtype, AnnotationSE... qualifiers)
      指定された必須型および追加の必須修飾子の子 Instance を取得します。
      Instance<T>select​(AnnotationSE... qualifiers)
      指定された追加の必須修飾子の子 Instance を取得します。
      <U extends T>
      Instance<U>
      select​(ClassSE<U> subtype, AnnotationSE... qualifiers)
      指定された必須型および追加の必須修飾子の子 Instance を取得します。
      default StreamSE<T>stream()
      呼び出されると、このインスタンスで使用可能な Bean のストリームを返します。
      • インターフェース jakarta.inject.Provider から継承されたメソッド

        get
    • メソッドの詳細

      • select

        Instance<T> select​(AnnotationSE... qualifiers)

        指定された追加の必須修飾子の子 Instance を取得します。

        パラメーター:
        qualifiers - 追加で必要な修飾子
        戻り値:
        子 Instance
        例外:
        IllegalArgumentExceptionSE - 同じ非反復修飾子型の 2 つのインスタンス、または修飾子型ではないアノテーションのインスタンスが渡された場合
        IllegalStateExceptionSE - コンテナーがすでにシャットダウンされている場合
      • select

        <U extends TInstance<U> select​(ClassSE<U> subtype,
                                         AnnotationSE... qualifiers)

        指定された必須型および追加の必須修飾子の子 Instance を取得します。

        型パラメーター:
        U - 必要な型
        パラメーター:
        subtype - 必要な型を表す ClassSE
        qualifiers - 追加で必要な修飾子
        戻り値:
        子 Instance
        例外:
        IllegalArgumentExceptionSE - 同じ非反復修飾子型の 2 つのインスタンス、または修飾子型ではないアノテーションのインスタンスが渡された場合
        IllegalStateExceptionSE - コンテナーがすでにシャットダウンされている場合
      • select

        <U extends TInstance<U> select​(TypeLiteral<U> subtype,
                                         AnnotationSE... qualifiers)

        指定された必須型および追加の必須修飾子の子 Instance を取得します。

        型パラメーター:
        U - 必要な型
        パラメーター:
        subtype - 必要な型を表す TypeLiteral
        qualifiers - 追加で必要な修飾子
        戻り値:
        子 Instance
        例外:
        IllegalArgumentExceptionSE - 同じ非反復修飾子型の 2 つのインスタンス、または修飾子型ではないアノテーションのインスタンスが渡された場合
        IllegalStateExceptionSE - コンテナーがすでにシャットダウンされている場合
      • stream

        default StreamSE<T> stream()

        呼び出されると、このインスタンスで使用可能な Bean のストリームを提供します。Bean が見つからない場合は、空のストリームを返します。

        戻り値:
        この Instance オブジェクトに関連付けられた Bean を表す Stream 
        導入:
        2.0
      • isUnsatisfied

        boolean isUnsatisfied()

        必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean がないかどうかを判別します。

        戻り値:
        必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean がない場合は true、それ以外の場合は false
      • isAmbiguous

        boolean isAmbiguous()

        必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が複数あるかどうかを判別します。

        戻り値:
        必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が複数ある場合は true、それ以外の場合は false
      • isResolvable

        default boolean isResolvable()

        必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が 1 つだけあるかどうかを判別します。

        戻り値:
        必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が 1 つだけある場合は true、それ以外の場合は false
        導入:
        2.0
      • destroy

        void destroy​(T instance)

        呼び出されると、Bean のスコープ型のアクティブなコンテキストオブジェクトが Bean インスタンスの破棄をサポートしている場合、コンテナーはインスタンスを破棄します。すべての通常のスコープの組み込みコンテキストは、Bean インスタンスの破棄をサポートします。

        渡されるインスタンスは、同じ Instance オブジェクトから取得された依存スコープの Bean インスタンスか、通常のスコープの Bean インスタンスのクライアントプロキシのいずれかである必要があります。

        パラメーター:
        instance - 破棄するインスタンス
        例外:
        UnsupportedOperationExceptionSE - Bean のスコープ型のアクティブコンテキストオブジェクトが Bean インスタンスの破棄をサポートしていない場合
        導入:
        1.1
      • getHandle

        Instance.Handle<T> getHandle()
        必要な型と修飾子を持ち、インジェクションに適格な Bean の初期化されたコンテキスト参照ハンドルを取得します。そのような Bean がない場合、または複数存在する場合は、例外をスローします。

        コンテキスト参照は遅延して取得されます。つまり、最初に必要になったときに取得されます。

        戻り値:
        新しい Instance.Handle インスタンス
        例外:
        UnsatisfiedResolutionException - 指定された型と修飾子を持つ Bean がない場合
        AmbiguousResolutionException - 型と修飾子が指定された Bean が複数ある場合
      • handles

        IterableSE<? extends Instance.Handle<T>> handles()
        必要な型と必要な修飾子を持ち、インジェクションの対象となるすべての Bean のコンテキスト参照ハンドルを反復処理できます。

        返された IterableSE はステートレスであることに注意してください。Iterable.iterator() ごとに新しいハンドルセットが生成されます。

        戻り値:
        新しいイテラブル
      • handlesStream

        default StreamSE<? extends Instance.Handle<T>> handlesStream()
        Instance.Handle オブジェクトのストリームを返します。
        戻り値:
        コンテキスト参照ハンドルの新しいストリーム