首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于理解"UserInfo user1 = (UserInfo) ois.readObject();“的问题

关于理解"UserInfo user1 = (UserInfo) ois.readObject();“的问题
EN

Stack Overflow用户
提问于 2011-05-16 23:16:18
回答 2查看 186关注 0票数 1

我正在学习java,并且正在研究来自sun.com的以下示例。

代码语言:javascript
复制
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( )之间有什么关系。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-16 23:19:06

正在读取该对象,并且代码将其强制转换为UserInfo对象,因为代码作者知道"name.out“包含UserInfo类型的序列化对象。

API非常清楚地说明了这一点:

readObject方法用于从流中读取对象。应该使用Java的安全类型转换来获取所需的类型。在Java中,字符串和数组是对象,在序列化期间被视为对象。读取时,需要将它们转换为预期的类型。

此外,您可能希望阅读有关Java tutorial's section re: Casting Objects的信息。

票数 3
EN

Stack Overflow用户

发布于 2011-05-16 23:20:29

具体地说,我不知道如何理解UserInfo user1 = (UserInfo) ois.readObject()行的代码;特别是括号中的“UserInfo”是什么功能。

ObjectInputStream.readObject()返回Object,而不是UserInfo,因此必须将其强制转换为UserInfo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6019477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档