有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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类(主类)中?可能是类似“ShowNotImplementedOnMasterClassWarning”这样的注释

另外,有没有办法在上述规则中添加例外?也许可以在类C中创建一个不需要在类a中的方法,使用诸如“SuppressNotImplementedOnMasterClassWarning”之类的注释

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

那么,有没有办法强制所有方法在默认情况下使用@Override注释,并在检查后仅对我不需要的方法执行@SuppressOverride


共 (2) 个答案

  1. # 1 楼答案

    简单

    1. 要求类C中的所有方法都有@Override注释。如果没有任何内容可以覆盖,则会出现错误
    2. 对于例外情况,省略@Override注释
  2. # 2 楼答案

    你为什么要这么做

    如果类C中有一个不在A中的方法,如果您试图在A对象上调用它,自然会出错:

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

    如果您打算在每个类中都使用该方法,并且希望得到此警告,因为您担心可能会忘记将其添加到每个需要它的类中,请不要担心。只要把这个方法放在AB中,C就会自动继承它

    由于首先不需要此警告,因此不需要任何东西来抑制它。只需在C中编写一个普通方法,它将只在C