1

请考虑此代码。是否使用循环引用?如果不是,为什么我在 XStream 中启用 NO_REFERENCE 模式时会收到 CircularReferenceException。任何人,请澄清这件事。

@XStreamAlias("BalanceEnquiry")
public class BalanceEnquiry extends EAIRequest {

    @XStreamImplicit
    private List<BalanceEnquiry.Detail> details;

    public List<Detail> getDetails() {
        ....
    }

    public void setDetails(Detail... details) {
        ....
    }

    @XStreamAlias("details")
    public final class Detail {

        @XStreamAsAttribute
        private String item;
        private BalanceEnquiry.Detail.Request request;

        public String getItem() {
            ....
        }

        public void setItem(String item) {
            ....
        }

        public Request getRequest() {
            ....
        }

        public void setRequest(Request request) {
            ....
        }

        public final class Request {

            private String code;
            private String branch;

            public String getCode() {
                ....
            }

            public void setCode(String code) {
                ....
            }

            public String getBranch() {
                ....
            }

            public void setBranch(String branch) {
                ....
            }
        }
    }
}
4

1 回答 1

2

我怀疑这是因为它Detail是一个内部类。因此,它具有对外部类实例的隐式引用(因此形成循环引用)。有关更多详细信息,请参见此处

于 2009-10-16T08:14:54.863 回答