2009-10-16 36 views
1

請考慮這段代碼。它是否使用循環引用?如果不是我爲什麼會在XStream中啓用NO_REFERENCE模式時收到CircularReferenceException。任何人,請澄清這件事。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 – 2009-10-16 08:24:21