Contexts and Dependency Injection (CDI) 1.0 実装では、javax.enterprise.inject.spi.InjectionPoint インターフェースを実装するクラスの getAnnotated メソッドは、javax.enterprise.inject.spi.Annotated のインスタンスを返すことができます。CDI 1.2 実装では、getAnnotated メソッドは、注入ポイントが注入フィールドであるか、コンストラクターまたはメソッドのパラメーターであるかに応じて、AnnotatedField または AnnotatedParameter のインスタンスを返さなければなりません。
この規則により、javax.enterprise.inject.spi.InjectionPoint インターフェースを実装するクラスの getAnnotated メソッド内の Annotated コンストラクターへの呼び出しにフラグを立てます。例えば、以下の new Annotated() への呼び出しはフラグが立てられます。
< code> public class MyInjectionPoint implements InjectionPoint {
public Annotated getAnnotated() {
新規 Annotated () を返します {
public Set < Annotation> getAnnotations() {
return null;
}
・・・
};
} 年
・・・
} </コード>
バイナリー・アプリケーション・スキャナーは、javax.enterprise.inject.spi.InjectionPoint インターフェースを実装するクラスのすべての getAnnotated メソッドにフラグを立てます。フラグが立てられた getAnnotated メソッドが AnnotatedParameter または AnnotatedField のインスタンスを返す場合は、この規則を無視することができます。getAnnotated メソッドが Annotated のインスタンスを返した場合は、コードを変更する必要があります。
CDI 1.2 実装では、クラス MyInjectionPoint を含むアプリケーションは開始せず、以下の例外をスローします。
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() must return either AnnotatedParameter or AnnotatedField
この問題を解決するには、new Annotated() への呼び出しを、注入ポイントが注入フィールドであるか、コンストラクターまたはメソッドのパラメーターであるかに応じて、new AnnotatedField() または new AnnotatedParameter() で置換します。
Java EE 7 CDI 1.2 実装について詳しくは、 Contexts and Dependency Injection 1.2 での振る舞いの変更を参照してください。