我在运行sonarqube分析后得到低于错误我收到错误
使“getPreAHistFlt”瞬态或可序列化“
我们如何解决这个问题?
代码段:
package com.sanju.p1;
//webfault and namespace
@WebFault(name = "getPreAHistFlt", targetNamespace = "http://www.getPreAuthorizationHistory")
public class getPreAHistFltMsg extends Exception {
private com.sanju.p2.GetPreAHistFlt getPreAHistFlt; // showing bug here
//constructors
public getPreAHistFltMsg() {
super();
}
public getPreAHistFltMsg(String message) {
super(message);
}
public getPreAHistFltMsg(String message, Throwable cause) {
super(message, cause);
}
public getPreAHistFltMsg(String message, com.sanju.p2.GetPreAHistFlt getPreAHistFlt) {
super(message);
this.getPreAHistFlt = getPreAHistFlt;
}
public getPreAHistFltMsg(String message, com.sanju.p2.GetPreAHistFlt getPreAHistFlt, Throwable cause) {
super(message, cause);
this.getPreAHistFlt = getPreAHistFlt;
}
public com.sanju.p2.GetPreAHistFlt getFaultInfo() {
return this.getPreAHistFlt;
}
}
getPreAHistFltMsg extends Exception
,这是Throwable
的子类; Throwable
实现Serializable
,因此Throwable
的所有子类也可传递地实现Serializable
。
据推测,com.sanju.p2.GetPreAHistFlt
没有实施Serializable
。因此,如果您尝试序列化该字段为非null的getPreAHistFltMsg
,则会失败,因为该字段的值无法序列化。
或者:
transient
从序列化中排除该字段;GetPreAHistFlt
实现Serializable
(但要注意有效的Java项目,了解为什么在执行之前应该仔细考虑实施Serializable
);我认为解决它的最简单方法是更改类GetPreAHistFlt以实现Serializable接口。
这可以通过将类GetPreAHistFlt设置为可序列化来完成。