8
见代码:
public class HostPoint implements Serializable {
// ------------------------------------------------------------------------
private final static long serialVersionUID = 1L;
private final HostAddress address;
@JSONField(name = "fingerprint")
private Fingerprint fingerprint;
@JSONField(name = "unkown")
private boolean unkown;
// ------------------------------------------------------------------------
@JSONCreator
public HostPoint(@JSONField(name = "address") HostAddress addr) {
this.address = addr;
}
// ------------------------------------------------------------------------
public boolean isChanged() {
return false;
}
public boolean isMatched() {
return false;
}
// ------------------------------------------------------------------------
@Override
public String toString() {
return MoreObjects.toStringHelper(getClass()) //
.addValue(address) //
.addValue(fingerprint) //
.toString();
}
@Override
public int hashCode() {
return Objects.hash(address);
}
// ------------------------------------------------------------------------
public HostAddress getAddress() {
return address;
}
public Fingerprint getFingerprint() {
return fingerprint;
}
public void setFingerprint(Fingerprint fingerprint) {
this.fingerprint = fingerprint;
}
public boolean isUnkown() {
return unkown;
}
public void setUnkown(boolean unkown) {
this.unkown = unkown;
}
}
调用反序列化后,如下打印:
HostPoint{HostAddress{192.168.10.101}, null}
调用JSONObject obj, 打印JSON如下:
{
"address":{
"hostAddress":"192.168.10.101"
},
"unkown":false,
"fingerprint":{
"source":"abc"
},
"matched":false,
"changed":false
}
即在使用标签指定构造器后,反序列化器不调用Setter了。