java - 有没有办法使用Java的Override注释来指定被覆盖的接口(interface)/类?

标签 java

有些类有许多继承自的接口(interface)。

我想在我的重写方法中明确说明我的方法重写了哪些接口(interface)或类,这样当我一个月后回顾我的代码时,我不必对正在实现的每个接口(interface)进行线性搜索,并且正在扩展类以查找正在覆盖哪个接口(interface)或类的方法。

情况:

class Foo extends Bar implements Foo1, Foo2, Bar1, Bar2
{
    public Foo(){}

    @Override
    void foo1() {}

    @Override
    void foo2() {}

    @Override
    void bar1() {}

    @Override
    void bar2() {}
}

我想做这样的事情:

class Foo extends Bar implements Foo1, Foo2, Bar1, Bar2
{
    public Foo(){}

    @Overrides(source="Foo2")
    void foo1() {}

    @Overrides(source="Bar1")
    void foo2() {}

    @Overrides(source="Bar2")
    void bar1() {}

    @Overrides(source="Foo1")
    void bar2() {}
}

有办法实现这一点吗?

解决方案(感谢 Nikem):

可以创建自定义注释(Overrides.java)

public @interface Overrides 
{
    String source() default ""; 
}

最佳答案

覆盖注释只是一个标记和编译时检查,以标记“某些东西”正在被覆盖,而不关心被覆盖的方法来自何处。如user2357112也就是说,许多 IDE 可以向您显示方法来自的接口(interface)/父类(super class)。如果您需要一种独立于 IDE 的方法来完成此任务,请添加注释或 javadoc 说明它来自哪个接口(interface)。

关于java - 有没有办法使用Java的Override注释来指定被覆盖的接口(interface)/类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501782/

相关文章:

java - 本地化包含名称列表的字符串

java - Android:如何在应用程序中使用外部 MySQL 数据库

java - API后端如何实现线程的公平使用策略?

java - 如何获取 Observablelist 中的所有唯一属性并统计唯一属性?

java - 检测 CSV 文件中出现的行数

java - 编译.java文件时javac.exe做什么?

java - 在测试和待测方法中使用相同的值

java - 接口(interface)中是否需要serialVersionUID(我希望不需要)?

java - 什么是NullPointerException,我该如何解决?

c# - 集成测试和 TDD