java - 有没有办法将方法注释传递给子类?
问题描述
我在通常被覆盖的方法上使用了一些自定义方法注释。例如,让我们考虑类似@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();
}
}
推荐阅读
- python - 使用多处理使用 ZipFile 读取文件
- c# - 无法从存储库调用 DBContext 构造函数
- ros - Ros 发射卡在 5G 网络中的机器人上
- android - 我无法启动 avd 模拟器 (android studio) 或在我的设备中进行测试
- python - 如何通过pandas Dataframe中的input()按内容查找索引?
- haskell - Haskell 实现一个带有折叠功能的过滤器列表
- ios - 未找到单元“FMX.WebBrowser.Delegate.Cocoa”
- javascript - Swup.js + Oxygen (wp) - 没有加载正确的站点?
- c# - 独立于 CultureInfo.Calendar 获取 DateTime
- django - Django Model.objects.get(...) 不区分大小写