2009-10-16 5 views
1

Пожалуйста, учитывайте этот код. Используется ли Circular Reference? Если нет, то почему я получаю CircularReferenceException, а при включении режима NO_REFERENCE в XStream. Любой, пожалуйста, проясните это.XStream, 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) { 
       .... 
      } 
     } 
    } 
} 

ответ

2

Я подозреваю, что это потому, что Detail является внутренним класса. Таким образом, он имеет неявную ссылку на экземпляр внешнего класса (и, следовательно, образует круговую ссылку). См. here для более подробной информации.

+0

Да, я только что закончил, чтобы понять это, прояснив некоторые основы. Спасибо за ссылку, так или иначе. +1 –