2011-04-01 85 views
0

嗨,我正在解析xml文件,我返回類ObjectsArrayList,但對於此方法的每次調用,ArrayList的大小從0-8和8增加到16和24 ...而不是創建一個新的ArrayList對象問題:ArrayList大小增加

下面是代碼:

public ArrayList<clsCategory> ParseCategoryXml(String fileToParse) 
{ 
    try 
    { 
     System.out.println("before XML Pasing Array size is = " + categoryArray.size()); 

      /** Handling XML */ 
      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser sp = spf.newSAXParser(); 
      XMLReader xr = sp.getXMLReader(); 

      /** Send URL to parse XML Tags */ 
      //URL sourceUrl = new URL("http://d.mobrobot.com/feeds/npv1/categories_Fox.xml"); 
      FileInputStream inputFile = new FileInputStream(fileToParse); 
      /** Create handler to handle XML Tags (extends DefaultHandler) */ 
      xr.setContentHandler(this); 
      xr.parse(new InputSource(inputFile)); 
    } 
    catch (Exception e) 
    { 
     System.out.println("XML Pasing Excpetion = " + e); 
    } 
    System.out.println("XML Pasing Array size is = " + categoryArray.size()); 
    return categoryArray; 
} 

在控制檯輸出爲

XML Pasing Array size is = 8 //when First call of method 
XML Pasing Array size is = 16 //when Secondcall of method 

誰能給我解釋一下這是怎麼回事?

回答

2

它看起來像categoryArray不是局部變量,它是一個實例變量..這就是爲什麼它在每次調用尺寸增大..

+0

thx,我的問題解決了位問題是ArrayList()是實例變量 – 2011-04-02 02:20:26

6

我不認爲你在你的代碼中的任何地方創建了一個新的ArrayList,所以每次你運行解析代碼時,解析的元素都被追加到舊的。

嘗試類似:

categoryArray = new ArrayList<clsCategory>(); 

在方法的開始。

+0

沒有我打電話「新的ArrayList ();」
in out方法 – 2011-04-01 13:18:01