好吧,我已經達到了本世紀的思想頭腦,坐了幾個小時認真思考這個問題。我很快就會添加一個例子在這裏:如何遍歷包含與對象具有相同類型的子對象的對象?
public class AdUnitSizes {
protected String environmentType;
@XmlElement(name = "size")
protected List<Size> sizes;
protected List<Companions> companions;
現在基本上,如果我要構建這個作爲一個XML文件,它會假設代表這樣的事情(注意,同伴的類型爲AdUnitSize [])
<adUnitSizes>
<size>
<width>800</width>
<height>600</height>
<isAspectRatio>true</isAspectRatio>
</size>
<environmentType>BROWSER</environmentType>
<companions> <!--adunitsize[]-->
<size>
<width>800</width>
<height>600</height>
<isAspectRatio>true</isAspectRatio>
</size>
<environmentType>BROWSER</environmentType>
<companions>
<size>
<width>800</width>
<height>600</height>
<isAspectRatio>true</isAspectRatio>
</size>
<environmentType>BROWSER</environmentType>
<companions>...</companions>
</companions>
</companions>
</adUnitSizes>
現在,我想指出,AdUnitSizes包含3個字段。大小,環境類型和隨播廣告。我現在正在嘗試使用我創建的對象包裝器(第一個示例)嘗試在每個子Companions對象和他們的子Companions對象迭代之前迭代不會進一步發生(它在我們的系統中不太可能那同伴會超過3個層次深,但我需要照顧這個反正)
這是我曾嘗試:
AdUnitSize[] adUnitSizeArray = adUnit.getAdUnitSizes();
if(adUnitSizeArray != null){
List<AdUnitSizes> adUnitSizesList = adUnitWrapper.getAdUnitSizes();
for(int i = 0; i < adUnitSizeArray.length; i++){
AdUnitSizes adUnitSizes = new AdUnitSizes();
aem.adservices.google.dfp6.om.Size size = new aem.adservices.google.dfp6.om.Size(); //Name clash with Google Size Class
size.setHeight(adUnitSizeArray[i].getSize().getHeight());
size.setWidth(adUnitSizeArray[i].getSize().getWidth());
size.setIsAspectRatio(adUnitSizeArray[i].getSize().getIsAspectRatio());
adUnitSizes.getSizes().add(size);
adUnitSizes.setEnvironmentType(adUnitSizeArray[i].getEnvironmentType().getValue());
List<Companions> companionsList = adUnitSizes.getCompanions();
//Need to iterate through all of adUnitSizeArray's Companions, and its companions children and so forth
}
}
任何想法?我接近這個錯誤嗎?
你試過了嗎?for(Companions companions:companionsList){...}' – SiB
這不是遞歸中的一個簡單練習嗎? –
看,這是問題,同伴,反過來,也包含同伴。 這樣就無法工作。 'for(Companions companions:companionsList){//包含大小,環境類型,同伴(0或更多)}我如何迭代這些兒童同伴? – Eon