【问题标题】:XStream, CircularReferenceExceptionXStream,循环引用异常
【发布时间】:2023-03-05 13:31:01
【问题描述】:

请考虑此代码。是否使用循环引用?如果不是,为什么我在 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) {
                ....
            }
        }
    }
}

【问题讨论】:

    标签: java xml exception serialization xstream


    【解决方案1】:

    我怀疑这是因为 Detail 是一个 inner 类。因此,它具有对外部类实例的隐式引用(因此形成循环引用)。详情请见here

    【讨论】:

    • 是的,在复习了一些基础知识之后,我才明白这一点。无论如何,感谢您的链接。 +1
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多