FindBugs错误:从实例方法写入静态字段

我在我的应用程序中有几个区域,我从实例方法操作静态变量的值时得到错误。

“从实例方法写入静态字段”

如果我们将multithreading排除在等式之外,即使多个实例写入同一个static变量,这种情况是否会造成任何潜在的问题?

从文档……

此实例方法写入静态字段。 如果正在操作多个实例,这很难得到正确,并且通常是不好的做法。

  • 首先它说这是一种不好的做法 ,而不是错误的做法
  • 第二件事是关于提出任何潜在问题的问题

    如果您正在从实例方法操作static字段,那么类的任何对象(包含我们的实例方法的类)可能正在调用该方法,并且很难找到在某个已经存在的大型应用程序或应用程序中操作static字段的对象由他人开发和编码。

这个答案也可以帮到你。

编辑:

仅供参考,您可以在以下代码中绕过findbug的警告。

 class TestClass { static int testInt = 0 ; public static setTestInt ( int a ) { TestClass.testInt = a ; } public void setInt ( int a1 ) { setTestInt ( a1 ); } }