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

时间:2020-01-13 07:47:58

标签: java android-studio intellij-idea annotations java-annotations

我在通常被覆盖的方法上使用了一些自定义方法注释。例如,让我们考虑类似@Async的注解:

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

有没有一种方法可以向编译器和/或IDE发出信号,方法注释应遵循方法的重写版本,以便当有人扩展Base并覆盖foo()时,{{ 1}}注释会自动插入,就像大多数IDE自动插入@Async一样?

如果没有通用的提示方式,是否有IntelliJ / Android Studio特定的方式?

1 个答案:

答案 0 :(得分: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();
  }
}