2014-04-16 5 views
0

누구든지이 코드를 설명해주십시오. 여기에서 물건들이 어떻게 조작 되는가? 무엇이 반환되고 어디로 가나 요? 무엇 개체 (알)을 할 때와 BTW이 클래스는 내가 직렬화 파일에서 ArrayList를 직렬화하는 데 사용됩니다반환 방법은 Java에서 어떻게 작동합니까?

al = fa.fetchArrayList(al); 

에서 할 이전

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]. 도움이 될 수 있습니다. arraylist의 일부 객체를 저장하고 그 arraylist를 파일로 저장합니다. 이 방법을 사용하여 전체 arraylist를 다른 arraylist로 deserialize하여 더 사용합니다. 왜 내가 매개 변수화 된 메서드를 정확히 사용했는지 알고 싶습니다. – eersteam

답변

0

질문에 대답하기 위해, 나는 질문을 답변으로 표시 할 수 있도록 여기에 의견에 제안을 넣을 것입니다.

Arkadiy의 제안은
귀하의 fetchArrayList는 매개 변수로 ArrayList이 필요하지만, 그것으로 아무것도하지 않습니다. 메소드의 서명에서 매개 변수를 제거 할 수 있습니다. 내가 제대로 수업을 해석하는 경우

나의 제안
, 당신은 단지 파일에서 ArrayList 객체를 읽기 위해 사용합니다. 그렇다면 fetchArrayList 메서드를 static 메서드로 선언 할 수 있습니다 (자세한 설명은 here 참조). 그렇게하면 파일에서 ArrayList을 읽은 후에 사용하지 않는 FetchArrayList 클래스의 새 인스턴스를 만들 필요가 없습니다 (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"); 
관련 문제