1 回答

TA貢獻1786條經驗 獲得超13個贊
中的readObject方法ObjectInputStream返回Object對正確類型的引用。
從 ObjectInputStream 中讀取一個對象。讀取對象的類、類的簽名以及類及其所有超類型的非瞬態和非靜態字段的值。
...
應該使用 Java 的安全轉換來獲得所需的類型。
因此,當您調用該方法時,您應該讓調用者將其轉換為正確的類型。
// Non-generic method.
public static Object deSerialize(String path) throws IOException {
// ...
YourType foo = (YourType) deSerialize(path);
如果必須使其泛型,則必須有一個類型見證 a Class,它可以為您執行動態類型轉換,以便編譯器在編譯時和運行時檢查類型Class.cast。仍然由調用者提供正確的Class.
public static <T> T deSerialize(String path, Class<T> clazz) throws IOException {
try {
ObjectInputStream o = new ObjectInputStream(new FileInputStream(path));
return clazz.cast(o.readObject());
}catch(Exception e) {
e.printStackTrace();
}
return null;
}
添加回答
舉報