*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
jackson通过调用实体类的get方法获取值,实体方法中存在clone方法时,在get开头的方法中调用时,就会出现无限循环,进而序列化失败。
测试复现:
public class Son implements Cloneable {
@Override
protected Son clone() throws CloneNotSupportedException {
return (Son)super.clone();
}
public Son getClone() throws CloneNotSupportedException {
return this.clone();
}
private int hight ;
private int start ;
private List<Address> address;
public int getHight() {
return hight;
}
public int getStart() {
return start;
}
public void setHight(int hight) {
this.hight = hight;
}
public void setStart(int start) {
this.start = start;
}
public List<Address> getAddress() {
return address;
}
public void setAddress(List<Address> address) {
this.address = address;
}
@Override
public String toString() {
return "Son{" +
"hight=" + hight +
", start=" + start +
", address=" + address +
'}';
}
}
public static void main(String[] args) throws JsonProcessingException {
Son son = new Son();
son.setHight(1);
son.setStart(2);
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(son));
Son son1 = mapper.readValue(mapper.writeValueAsString(son), Son.class);
System.out.println(son1);
}