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;
}
添加回答
举报