在可序列化的Java类中使用记录器的正确方法是什么?
2022-09-03 04:33:57
						我在我正在处理的系统中有以下(篡改)类,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(...);
    }
}
不过,这似乎并不是特别有效。
思潮?
 
					 
				 
				    		 
				    		 
				    		 
				    		