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 {}
另请参阅:
我使用 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 {}
另请参阅: