2014-04-16 47 views
0

任何人都可以請解釋這段代碼嗎?比如這裏的對象是如何被操縱的?什麼是回報,它去了哪裏?並使什麼呢對象(人)的時候做可返回的方法在JAVA中如何工作?

al = fa.fetchArrayList(al); 

順便說一句這個類是用來從我連載文件反序列化一個ArrayList較早

public class FetchArrayList { 
    ArrayList<Word> fetchArrayList(ArrayList<Word> arrayList) 
    { 
     ArrayList<Word> al = new ArrayList<Word>(); 
     FileInputStream fis = new FileInputStream("C:/xyz"); 
     ObjectInputStream ois = new ObjectInputStream(fis); 

     al.addAll((ArrayList<Word>) ois.readObject()); 
     ois.close(); 
     return al; 
     //this part i know 
    } 
} 

下面是如何使一個對象此類

ArrayList al = new ArrayList(); 
FetchArrayList fa = new FetchArrayList(); 
al = fa.fetchArrayList(al); 

如何讓此代碼更好?我在這裏笑

+3

能否請你加什麼是你想在這裏實現,因爲這種方法是不是真的清楚嗎?你需要什麼arrayList參數? –

+0

據我所知,將'al'作爲參數傳遞給你的代碼並不令人興奮。 您是不是要填寫預先存在的ArrayList? – Arkadiy

+0

@Norbert看這個問題,我剛纔問[http://stackoverflow.com/questions/23044159/how-to-serialize-arraylist-2x-and-dont-over-write-the-already-present-arraylist?noredirect = 1#comment35209867_23044159]。可能有幫助。我將一些對象保存爲數組列表並將該數組列表保存在文件中。並從這種方法將整個數組列表反序列化爲另一個數組列表以進一步使用它。不知道爲什麼我完全使用參數化方法,那就是我想知道的。 – eersteam

回答

0

新秀爲了回答這個問題的緣故,我把這些建議在這裏的意見,以便問題可以作爲回答進行標記。

長Arkadiy的建議
fetchArrayList所需的ArrayList作爲參數,但它不會用它做任何事情。您可以從方法的簽名中刪除參數。

我的建議
如果我正確地解釋你的類,你僅使用它從文件中讀取ArrayList對象。如果是這樣,您可以聲明fetchArrayList方法爲static方法(有關更多說明,請參閱here)。這樣,你就不必創建FetchArrayList類,你可能從文件中讀取ArrayList後(那麼你可以調用FetchArrayList.fetchArrayList())將不使用的新實例。請注意,由於類和方法名稱,此調用看起來很奇怪。我建議將類名重構爲更合乎邏輯的東西。

0

這就是我可能會寫代碼的方法。

public enum IOTools {; 
    public static <T> List<T> readList(String filename) throws IOException { 
     try (ObjectInputStream ois = new ObjectInputStream(
             new FileInputStream(filename))) { 

      return (ArrayList<T>) ois.readObject()); 
    } 
} 

然後,你可以寫

List<Words> words = IOTools.readList("words.list"); 
List<String> strings = IOTools.readList("strings.list");