任何人都可以解释一下这段代码吗?就像在这里操纵物体一样?什么是归还的,它去了哪里?在制作对象时(al)在
中做什么al = fa.fetchArrayList(al);
btw这个类用于从我之前序列化的文件中反序列化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);
如何让这段代码变得更好?我是一个新手在这里哈哈
答案 0 :(得分:0)
为了回答这个问题,我会在这里的评论中提出建议,以便将问题标记为已回答。
Arkadiy的建议
您的fetchArrayList
需要ArrayList
作为参数,但它不会对其执行任何操作。您可以从方法的签名中删除参数。
我的建议
如果我正确地解释了您的类,则仅将其用于从文件中读取ArrayList
对象。如果是这样,您可以将fetchArrayList
方法声明为static
方法(有关详细说明,请参阅here)。这样你就不必创建FetchArrayList
类的新实例,在从文件中读取ArrayList
之后你可能不会使用它(你可以调用{ {1}})。请注意,由于类和方法名称,此调用看起来很奇怪。我建议将类名重构为更合乎逻辑的东西。
答案 1 :(得分: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");