HK2 自定义注释构造函数上不允许注释

HK2 Custom annotation Annotation disallowed on Constructor

我使用 HK2 注入框架开发了一个自定义注释,用于将我的自定义对象注入到我的 classes 中。

如果我将我的对象注释为 class 变量,一切正常:

public class MyClass {
    @MyCustomAnnotation
    MyType obj1

    @MyCustomAnnotation
    MyType obj2

     ...

现在我需要将我的对象作为构造函数参数注入,即:

public class MyClass {

    MyType obj1        
    MyType obj2

    @MyCustomAnnotation
    public MyClass(MyType obj1, MyType obj2){
        this.obj1 = obj1;
        this.obj2 = obj2;
    }
     ...

在我的注入解析器中,我覆盖了:

@Override
public boolean isConstructorParameterIndicator() {
    return true;
}

为了return真实。

问题是当我尝试构建我的项目时它发现了一个错误提示:

"The annotation MyCustomAnnotation is disallowed for this location"

我错过了什么?

听起来像是注释定义问题。注释定义中的 @Target 定义允许注释的位置。允许的目标在 ElementType 枚举集中。

ANNOTATION_TYPE, CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE

为了能够定位构造函数,您需要将 CONSTRUCTOR 添加到 @Target。您可以有多个目标。例如

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.CONSTRUCTOR})
public @interface MyCustomAnnotation {}

另请参阅: