У меня есть следующий ( doctored ) класс в системе, над которой я работаю, и Findbugs генерирует предупреждение SE_BAD_FIELD , и я пытаюсь Я понимаю, почему это будет сказано, прежде чем я исправлю это так, как я думал. Причина, по которой я запутался, заключается в том, что описание, по-видимому, указывает на то, что я не использовал никаких других не сериализуемых полей экземпляра в классе, но bar.model.Foo также не сериализуем и используется точно так же (насколько я могу сказать) но Findbugs не выдает для него предупреждения.
import bar.model.Foo;
import java.io.File;
import java.io.Serializable;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Demo implements Serializable {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final File file;
private final List<Foo> originalFoos;
private Integer count;
private int primitive = 0;
public Demo() {
for (Foo foo : originalFoos) {
this.logger.debug(...);
}
}
...
}
Мой первоначальный взгляд на решение состоит в том, чтобы получить ссылку на регистратор с завода, как я его использую:
public DispositionFile() {
Logger logger = LoggerFactory.getLogger(this.getClass());
for (Foo foo : originalFoos) {
this.logger.debug(...);
}
}
Хотя это не кажется особенно эффективным.
Мысли