如果我有一个InjectPoint
类实例,我该如何从中读取注释的属性。即:使用限定符@MyCar(mpg="23")
如果我注射"23"
后injectionPoint
,我将如何获得mpg和MyCar
?
@Inject
public void injectionTest(@MyCar(mpg="23") Car _car,InjectionPoint ip)
{
...
}
@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface MyCar
{
@Nonbinding
String mpg() default "30";
}
答案 0 :(得分:3)
for(Annotation a : injectionPoint.getQualifiers())
{
if(a instanseof MyCar)
{
MyCar myCar = (MyCar) a;
a.mpg();
}
}
答案 1 :(得分:1)
您可以使用getAnnotated方法避免迭代注释。您也可以通过这种方式访问其他注释,而不仅仅是限定符。
MyCar myCar = ip.getAnnotated().getAnnotation(MyCar.class);
System.out.println(myCar.mpg());