次のような Java クラスがあります。
public class Foo {
public static int counter = 0;
public void bar(int counter) {
Foo.counter = counter;
}
}
counter
FindBugsは、インスタンス メソッドによる静的フィールドへの書き込みについて警告しますbar
。ただし、コードを次のように変更すると:
public class Foo {
public static int counter = 0;
public static void setCounter(int counter) {
Foo.counter = counter;
}
public void bar(int counter) {
setCounter(counter);
}
}
そうすれば、FindBugs は文句を言いません。それは間違っていませんか?静的メソッドを介して、インスタンス メソッドから静的フィールドにまだ書き込みを行っていますね。