实体类定义非暂时性不可序列化实例字段价格



下面是一些显示SONAR错误的代码,例如:Class com.sample.Submit定义了非瞬时不可序列化的实例字段价格。我们如何摆脱这个问题。

法典

@JsonIgnoreProperties(ignoreUnknown = true)
public class Submit implements Serializable {
/**
* serialVersionUID of type long.
*/
private static final long serialVersionUID = 0L;
@JsonProperty("billCode")
private String billCode;
@JsonProperty("displayName")
private String displayName;
@JsonProperty("visible")
private Boolean visible;
@JsonProperty("price")
private Price price;

public Boolean getVisible() {
return visible;
}
public void setVisible(Boolean visible) {
this.visible = visible;
}
public String getBillCode() {
return billCode;
}
public void setBillCode(String billCode) {
this.billCode = billCode;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}

public Price getPrice() {
return price;
}
public void setPrice(Price price) {
this.price = price;
}
}

声明你的类Price可序列化的,如下所示:

public class Price implements Serializable {
...
}

如果您确实需要该类可序列化,那么它的每个实例成员(如 Price(也需要可序列化。

考虑一下你是否真的需要这个 Submit 类是可序列化的。如果您没有执行任何需要存储此类或将其复制到网络上的操作(例如将其放入 HTTP 会话中,或将其保存在文件系统中,或将其放入队列中(,则可能根本不需要该类可序列化,其中最好的方法是从 Submit 类中删除implements Serializable

(请注意,使类可序列化与使用它生成 JSON 无关。

最新更新