我正在处理的系统中有以下(修改过的)类,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(...);
}
}
不过,这似乎并不是特别有效。
想法?