实现编译时警告

时间:2017-11-22 19:23:08

标签: java

让我说我有三个课程如下

class A { //Master class.

  public int getNum() {
    return 1;
  }

}

class B extends A {
  @Override
  public int getNum() {
    return 2;
  }
}
class C extends A {
  @Override
  public int getNum() {
    return 3;
  }
}

现在,如果我需要再创建一个方法(比如C类的getRandNum()),是否有任何注释或某种方式来警告我,同时编译该方法仅存在于C类但不存在于A类中( master class)也许是一些注释,如“ShowNotImplementedOnMasterClassWarning”?

另外,有没有办法在上述规则中添加例外?也许在C类中使用像“SuppressNotImplementedOnMasterClassWarning”这样的注释创建一个不需要在A类中的方法?

编辑:问题是我现在有一个非常大的代码库,在编写各个方法时,开发人员忽略了@Override注释,我找不到哪些是重写方法,哪些不是!

那么有什么办法可以强制所有方法默认使用@Override注释,并且只检查检查后我不需要的方法的@SuppressOverride?

2 个答案:

答案 0 :(得分:2)

你为什么要这样做呢?

如果您在C课程中有一个不在A中的方法,那么如果您尝试在A对象上调用它,您自然会收到错误:< / p>

A a = new A();
a.getRandNum(); // error!

如果您打算将该方法放在每个班级中并且您想要这个警告,因为您害怕您可能忘记将其添加到需要它的每个班级,请不要担心。只需将方法放在AB中,C就会自动继承该方法。

由于首先不需要这个警告,你不需要任何东西来压制它。只需在C中编写一个普通方法,它就只能在C中。

答案 1 :(得分:0)

简单。

  1. 要求类C中的所有方法都有@Override注释。如果没有要覆盖的内容,您将收到错误。
  2. 对于例外情况,请省略@Override注释