gpt4 book ai didi

java - 无法从 ArrayList 转换为 ArrayList
转载 作者:行者123 更新时间:2023-11-30 06:08:34 25 4
gpt4 key购买 nike

我正在尝试创建一个通用的 loadFile 方法,该方法可以从文件中读取序列化对象。但是,对象类型可能会根据要加载的文件而有所不同。我显然误解了类型转换的工作原理,但无法真正找到我应该在这里做什么。

下面是我的 FileAdapter 类:

public class FileAdapter {

public ArrayList<Transaction> loadTransactions() {

return (ArrayList<Transaction>) loadFile(new File("data/transactions.ser"));
}

public ArrayList<Fund> loadFunds() {

return (ArrayList<Fund>) loadFile(new File("data/funds.ser"));
}

private ArrayList<Object> loadFile(File file) {

ArrayList<Object> obj = new ArrayList<>();

FileInputStream fis = new FileInputStream(file);
in = new ObjectInputStream(fis);
obj = (ArrayList<Object>) in.readObject();

return obj;
}
}

可以看出,我有两种从文件加载不同类型的对象的方法,但我想共享实际加载文件的代码。我正在尝试做的事情是否可行,但只是错误地实现了,或者如果类型不同,这根本不起作用?

最佳答案

可以通过定义 bounded type parameter 来完成在方法 loadFile 的定义中,如下所示:

public ArrayList<Transaction> loadTransactions(){
return loadFile(new File("data/transactions.ser"));
}

public ArrayList<Fund> loadFunds(){
return loadFile(new File("data/funds.ser"));
}

private <T> ArrayList<T> loadFile(File file) {
ArrayList<T> obj = new ArrayList<>();
...
return (ArrayList<T>) in.readObject();
}

关于java - 无法从 ArrayList<Object> 转换为 ArrayList<MyObject>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664343/

25 4 0