有没有一种方法可以将方法注释传递给子类?

4

我有几个自定义方法注解,这些注解通常用于重写方法。例如,让我们考虑类似 @Async 注解的东西:

public class Base {
  @Async
  public void foo() {
  }
}

有没有一种方法可以向编译器和/或IDE发出信号,表示方法注释应该遵循方法的重写版本,这样当有人扩展Base并覆盖foo()时,@Async注释会自动插入,类似于大多数IDE自动插入@Override的方式?

如果没有通用方法来提示这一点,那么是否有IntelliJ / Android Studio特定的方法?

1个回答

3

如果使用其他注释@Inherited标记注释,则该注释将被继承。因此,如果您给出的示例注释@Async是您自己的,请执行以下操作:

@Inherited
// other annotations (e.g. Retention, Target etc)
@interface Async {
}

如果这不是你的注解,那么在子类中使其可见的唯一方法是创建一个简单实现foo()的方法,并将该方法标记为该注解,例如:

public class Base {
  @Async
  public void foo() {
  }
}
public class Child extends Base {
  // Trivial implementation needed only to make the annotation available here. 
  @Async
  public void foo() {
      super.foo();
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接