当前位置: 首页 > 面试题库 >

声纳:实例方法不应写入“静态”字段

壤驷向明
2023-03-14
问题内容

我从Sonar收到此提示: 实例方法不应写入“静态”字段

我不确定要解决此问题需要更改什么。

“ SemaMonitorProxy.applicationContext”是否必须等于静态方法?

public class SemaMonitorProxy implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    public void registerFailedLoginAttempt(HttpServletRequest request, HttpServletResponse response) {
        final SemaMonitor semaMonitor = applicationContext.getBean(SemaMonitor.class);
        semaMonitor.registerFailedLoginAttempt(request, response);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SemaMonitorProxy.applicationContext = applicationContext;
    }
}

问题答案:

实际上这种方法:

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    SemaMonitorProxy.applicationContext = applicationContext;
}

是写入静态字段的实例方法:

private static ApplicationContext applicationContext

您不能将上述方法设为静态。因此,唯一的解决方案是从applicationContext声明中删除static关键字。

private ApplicationContext applicationContext


 类似资料:
  • 声纳有一条规则: 不访问实例数据的方法应该是 不访问实例数据的私有方法可以是静态的,以防止对方法契约的任何误解。 我在一个从匿名内部类创建新对象的方法中有此警报。 How是一个非静态字段。我无法对非静态字段进行静态引用。正如sonar所说,我不能将此方法设置为静态,因为存在一个访问实例数据的方法。 我的问题是,Sonar没有在匿名内部类中看到的使用,因此Sonar向我显示了警告:不访问实例数据的私

  • 编译器在第3行给出了一个错误 此实例方法无法重写Abc中的静态方法 为什么静态方法不能被实例方法覆盖?

  • 本文向大家介绍静态方法和实例方法有何不同相关面试题,主要包含被问及静态方法和实例方法有何不同时的应答技巧和注意事项,需要的朋友参考一下 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实

  • 我最近对 PHP 5.4 进行了更新,但收到有关静态和非静态代码的错误。 这是错误: 这是第371行: 我希望有人能帮忙。

  • 问题内容: 我有一个与此相似的类,并且findbugz抱怨“从实例方法写入静态字段”(和)。我无法在ctor中设置静态字段。 解决此问题的最佳方法是什么? 将staticField放在AtomicReference中就足够了吗? 问题答案: 尽可能保持与原始设计的距离… 通过类名称引用您的静态变量,这将删除findbugz警告。将您的静态变量标记为volatile,这将使引用在多线程环境中更安全。

  • 我正在使用存储库模式并尝试建立模型之间的关系。当我尝试运行存储()方法(在控制器中),该方法试图使用用户()方法(与方模型建立关系)时,我收到以下错误消息: 非静态方法不应该静态调用::user(),假设$this来自不兼容的上下文 我不明白为什么在尝试运行user()relationship方法时会出现此错误,但所有其他方法(包括$this- 以下是相关代码: