[英]Reading objects from a .dat file using Java
我在 a.dat 文件中有 3 個 Fraction 類型的對象,我正在嘗試使用 Java 讀取 .dat 文件的內容。
使用下面的代碼塊,我不斷得到:
Exception in thread "main" java.lang.ClassCastException: class Fraction cannot be cast to class [LFraction; (Fraction and [LFraction; are in unnamed module of loader 'app') at Mod8Problem1.main(Mod8Problem1.java:26)
我已經嘗試了一些事情,但我一直遇到同樣的異常。 解決此問題的最佳方法是什么?
try(
ObjectInputStream input = new ObjectInputStream(new FileInputStream("SerialF.dat"))
) {
Fraction[] updatedFractions = (Fraction[]) (input.readObject());
for (int i = 0; i < updatedFractions.length; i++) {
System.out.println(updatedFractions[i]);
}
}
你的問題在這里:
Fraction[] updatedFractions = (Fraction[]) (input.readObject());
input.readObject()
返回Fraction
,但您試圖將其強制轉換為Fraction[]
,這不是兼容的類型。 不過,您可以將多個Fraction
讀入一個數組以獲得相同的結果。 您可以使用ArrayList
來執行此操作,如下所示:
ArrayList<Fraction> fractions = new ArrayList<>();
try (
ObjectInputStream input = new ObjectInputStream(new FileInputStream("SerialF.dat"))
) {
while (input.available() > 0) {
fractions.add((Fraction) input.readObject);
}
}
Fraction[] updatedFractions = fractions.toArray(new Fraction[0]);
for (Fraction fraction : updatedFractions) {
System.out.println(fraction);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.