Java FindBugs错误:从实例方法写入静态字段
在我的应用程序中,有两个区域在从实例方法处理静态变量值时出错 “从实例方法写入静态字段”Java FindBugs错误:从实例方法写入静态字段,java,static,code-analysis,findbugs,Java,Static,Code Analysis,Findbugs,在我的应用程序中,有两个区域在从实例方法处理静态变量值时出错 “从实例方法写入静态字段” 如果我们从等式中去掉多线程,那么即使多个实例写入同一个静态变量,这种情况是否会带来任何潜在问题?来自文档 此实例方法写入静态字段。这很难做到 如果正在操纵多个实例,并且通常是坏的,则正确 练习 首先,它说这是一种不好的做法,不是不正确的 第二件事是关于提出任何潜在问题的问题 如果您正在从实例方法操作静态字段,则类的任何对象(包含我们的实例方法的类)都可能正在调用该方法,并且很难在某些大型应用程序或其他人已
如果我们从等式中去掉多线程,那么即使多个实例写入同一个
静态变量,这种情况是否会带来任何潜在问题?来自文档
此实例方法写入静态字段。这很难做到
如果正在操纵多个实例,并且通常是坏的,则正确
练习
- 首先,它说这是一种不好的做法,不是不正确的
- 第二件事是关于提出任何潜在问题的问题
如果您正在从实例方法操作
静态
字段,则类的任何对象(包含我们的实例方法的类)都可能正在调用该方法,并且很难在某些大型应用程序或其他人已经开发和编码的应用程序中找到操作静态
字段的对象
也许对你也有帮助
编辑:
仅供参考,您可以在以下代码中绕过findbug的警告
class TestClass {
static int testInt = 0 ;
public static setTestInt ( int a ) {
TestClass.testInt = a ;
}
public void setInt ( int a1 ) {
setTestInt ( a1 );
}
}
检查这个SO问题。我特别想知道什么时候不涉及线程,这个场景是否可能会产生任何问题。一些解释会很好。所以,我想在单线程环境中,这不应该是一个问题,对吗?不,有时可能是。我认为您没有正确理解最后一段?我的意思是,如果静态变量是单线程的,那么它引用的数据的完整性是否存在任何潜在问题?顺便说一句,谢谢你的及时回复。这就是我一直在寻找的…现在我只是想了解数据完整性将如何受到损害。例如,在单线程场景中,如果多个实例对这段代码执行操作,则不可能同时执行rt?(因为没有线程)。因此,每个实例一个接一个地作用于代码,最后变量将具有上一个实例设置的任何值。所以,无论实例开始使用的静态字段值是多少,在这两者之间都不会改变,因为没有并行执行。那么,这里的数据完整性是如何受到影响的呢?感谢您的努力。