目录
一、sonar问题描述
如下代码,Person类型实现了序列化接口 Serializable,意味着Person可以序列化和反序列化,但是Person类里面有个Address类型的属性,这个Address没有实现序列化接口,意味着 Address不能序列化,这就让Person的这个Address属性不能序列化,Sonar就报错了。
public class Address {
//...
}
public class Person implements Serializable {
private static final long serialVersionUID = 1905122041950251207L;
private String name;
private Address address; // Noncompliant; Address isn't serializable
}
二、解决方案
1. Address类实现序列化接口 Serializable
public class Address implements Serializable {
private static final long serialVersionUID = 1905122041950251207L;
//...
}
public class Person implements Serializable {
private static final long serialVersionUID = 1905122041950251207L;
private String name;
private Address address; // Noncompliant; Address isn't serializable
}
2.Address属性前加上 transient,在序列化时忽略这个属性
public class Address {
//...
}
public class Person implements Serializable {
private static final long serialVersionUID = 1905122041950251207L;
private String name;
// 解决代码
private transient Address address;
}