在SONAR中执行方法覆盖时的次要问题

时间:2015-08-25 16:19:12

标签: java inheritance sonarqube method-overriding

方法一:问题是

说明受让人资源新问题      - 无用的覆盖方法:覆盖方法只调用super      - 覆盖      A.executeImpl

class A {

protected void executeImpl(){
 // blah blah
}}

class B extends A{

protected void executeImpl(){

super.executeImpl();
}}

class C{

@Inject B b;

protected void executeCall(){

b.executeImpl();
}
}

如果我删除overriden方法: Java错误: 来自类型B的方法executeImpl()不是  可见

class A {

protected void executeImpl(){
 // blah blah
}}



class B extends A{

}



class C{

@Inject B b;

protected void executeCall(){

b.executeImpl();
}
}

我的方法是删除声纳小问题。

1 个答案:

答案 0 :(得分:2)

我想说你必须重新考虑你的包结构。我认为A位于另一个包中,而不是BC。因此C无法访问A中的受保护方法,但如果您在B中覆盖该方法,则C可以访问该文件。

  • 您可以在executeImpl()中公开A
  • ABC全部移至同一个套餐或
  • 只是忽略此问题或将其标记为false 积极的解释。