我正在学习java,并从sun.com学习以下示例。
import java.io.*;
import java.util.*;
public class UserInfo implements Serializable {
String name = null;
public UserInfo(String name) {
this.name = name;
}
public void printInfo() {
System.out.println("The name is: "+name);
}
}
import java.io.*;
import java.util.Date;
public class ReadInfo {
public static void main(String argv[]) throws Exception {
FileInputStream fis = new FileInputStream("name.out");
ObjectInputStream ois = new ObjectInputStream(fis);
UserInfo user1 = (UserInfo) ois.readObject();
UserInfo user2 = (UserInfo) ois.readObject();
user1.printInfo();
user2.printInfo();
ois.close();
fis.close();
}
}
我对ReadInfo.java有疑问。具体来说,我不知道如何理解UserInfo行的代码user1 =(UserInfo)ois.readObject();特别是,括号中“UserInfo”的功能是什么。 (UserInfo)和ols.readObject()之间的关系是什么。
答案 0 :(得分:3)
正在读取Object并且代码将其转换为UserInfo对象,因为代码作者有一些知识,“name.out”包含UserInfo类型的序列化对象。
API非常清楚:
方法readObject用于读取 来自流的对象。 Java是安全的 铸造应该用来获得 期望的类型。在Java,字符串和 数组是对象,被视为对象 序列化过程中的对象。什么时候 阅读他们需要被投射到 期望的类型。
此外,您可能希望阅读Java tutorial's section re: Casting Objects。
答案 1 :(得分:1)
具体来说,我不知道该怎么做 理解UserInfo行的代码 user1 =(UserInfo)ois.readObject(); 特别是,功能是什么 括号中的“UserInfo”。
ObjectInputStream.readObject()
返回Object
,而不是UserInfo
,因此必须将其投放到UserInfo