java - 有没有办法将方法注释传递给子类?

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

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

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

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

如果没有暗示这一点的一般方法,是否有特定于 IntelliJ/Android Studio 的方法?

最佳答案

如果标注了其他注解,则该注解被继承 @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();
  }
}

关于java - 有没有办法将方法注释传递给子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59712403/

相关文章:

java - 我的 onResume 取决于 `onViewCreated` 。我怎样才能重新设计它?

Android Studio Gradle 不构建项目

android - Intellij Idea慢速编译Android应用

git - intellij idea : how to diff contents of a folder (recursively) against latest (or earlier) revision in SCM repo (e. g., Git ?)

intellij-idea - 为什么我可以使用 lambda 表达式的名称,但不能使用函数的名称?

用于从 XML 中提取媒体信息的 Java 代码

java - 以编程方式确定 Coherence 主成员

java - 使用 JavaFX 打开多个窗口

Android Studio CMake/Ninja 未用于构建 NDK 项目

android - 有人知道如何更改 "Run"控制台窗口的字体吗?