今天在用find bugs插件检查项目代码, 发现如下问题:
在web层的action中,定义了一个service层的接口, 已知action是继承struts2的ActionSupport,也就是说这个是实现了序例化接口的,而项目用的是spring的注入,所以action里面直接定义的是一个接口引用。
结果用find bugs一检查,报出这样提示:SE_BAD_FIELD原提示信息:
可序列化的类中,有不能序列化,也不是transient,也不是static 的字段。并且这个类也没有实现接口Externalizable , 也没定义方法readObject 及writeObject,所以序列化及反序列化处理无法正常进行。代码参考:接口
public interface IPostQuesDel {
....
....
}ACTION
public class EvaluationUploadAction extends ActionSupport{
private IPostQuesDel postQuesDel; //find bugs报这行错
....
....
}我想了一下,transient static 这两个关键词都不怎么合适,都不应该加在这个属性前面,实现Externalizable这个接口也没大必要,
实然脑子就断路了, 难不成将这个接口实现序例化接口Serializable ,可不对呀,接口只能继承,那能接口实现接口呢, 欢迎各位拍砖!
在web层的action中,定义了一个service层的接口, 已知action是继承struts2的ActionSupport,也就是说这个是实现了序例化接口的,而项目用的是spring的注入,所以action里面直接定义的是一个接口引用。
结果用find bugs一检查,报出这样提示:SE_BAD_FIELD原提示信息:
可序列化的类中,有不能序列化,也不是transient,也不是static 的字段。并且这个类也没有实现接口Externalizable , 也没定义方法readObject 及writeObject,所以序列化及反序列化处理无法正常进行。代码参考:接口
public interface IPostQuesDel {
....
....
}ACTION
public class EvaluationUploadAction extends ActionSupport{
private IPostQuesDel postQuesDel; //find bugs报这行错
....
....
}我想了一下,transient static 这两个关键词都不怎么合适,都不应该加在这个属性前面,实现Externalizable这个接口也没大必要,
实然脑子就断路了, 难不成将这个接口实现序例化接口Serializable ,可不对呀,接口只能继承,那能接口实现接口呢, 欢迎各位拍砖!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货