是否可以创建要使用的自定义Alias-Annotation而不是
@SuppressWarnings("unused") // EventBus
public void onEvent(SomeMessage msg) { ... }
像
@EventBusListener
public void onEvent(SomeMessage msg) { ... }
这将更加自我记录,当然应该包括SuppressWarnings ...... 对不起,如果这个微不足道,但我的谷歌搜索到目前为止失败了。
答案 0 :(得分:1)
一种方法是编写一个转换AST(编译器的源代码内部表示)的注释处理器。每次出现@EventBusListener
时,注释处理器都会插入@SuppressWarnings("unused")
的出现位置。编译器的后期阶段会看到注释。
注释处理器通常不会更改源代码,因此这需要一些工作。 AST作为接口类型提供给注释处理器,因此注释处理器需要将其转换为具体类并对具体类执行副作用。 Project Lombok是在编译期间修改AST的注释处理示例。
但您可能只想编写@SuppressWarnings("unused")
注释。
答案 1 :(得分:1)
您可以按照以下方式实施:
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
@SuppressWarnings("unused")
public @interface EventBusListener{
@AliasFor(annotation = SuppressWarnings.class, attribute = "value") String[] value() default {"unused"};
}