有没有办法将方法注释传递给 sub-类?
Is there a way to have method annotations passed on to sub-classes?
我在通常被覆盖的方法上使用了一些自定义方法注释。例如,让我们考虑类似 @Async
注释的内容:
public class Base {
@Async
public void foo() {
}
}
有没有办法向编译器发出信号 and/or IDE 方法注释应该跟在方法的重写版本中,这样当有人扩展 Base
并重写 foo()
,自动插入 @Async
注释,类似于大多数 IDEs?
自动插入 @Override
的方式
如果没有通用的提示方式,是否有 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();
}
}
我在通常被覆盖的方法上使用了一些自定义方法注释。例如,让我们考虑类似 @Async
注释的内容:
public class Base {
@Async
public void foo() {
}
}
有没有办法向编译器发出信号 and/or IDE 方法注释应该跟在方法的重写版本中,这样当有人扩展 Base
并重写 foo()
,自动插入 @Async
注释,类似于大多数 IDEs?
@Override
的方式
如果没有通用的提示方式,是否有 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();
}
}