因此,我有2个注释A和B来自现有的Java库,它们实现了AOP。
他们俩都做了我班上必不可少的事情,我需要按此顺序(在B之前先于A)放置
public class MyClass{
@A(parameter="par")
@B(value="key")
public void method(){
}
}
是否可以将第三个注释C定义为两者的组合? 所以最后我会得到:
public class MyClass{
@C(parameter="par", value="key")
public void method(){
}
}
编辑:还添加了从@A获取参数的要求,以及由于注释是从libs获取的,所以我没有源代码。
答案 0 :(得分:1)
这取决于您使用的库。例如spring
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
/**
* Exclude specific auto-configuration classes such that they will never be applied.
* @return the classes to exclude
*/
@AliasFor(annotation = EnableAutoConfiguration.class)
Class<?>[] exclude() default {};
使用这种方法,您将:
@A
@B
public @interface C{
@AliasFor(annotation = B.class)
String value();
@AliasFor(annotation = А.class, attribute = "parameter")
String param();
}
答案 1 :(得分:1)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@A
@B
public @interface C {
@AliasFor(annotation = B.class, attribute = "value")
String value() default {};
}
让我知道这是否可行。