一个公司面试题~!

昨天一个好朋友和我打电话说,他接到一个著名公司的面试通知,然后他很欣喜的去了,因为他深入j2ee开发很多年,对于各种框架的应用十分的熟练,就是那种明天上班马上就能上手工作的那种人,公司的面试题很简单,却给他出了一个简单的难题:
   题:假设某个Login对象保存某个特定的登录会话信息,登录的合法性通过校验以后,我们想把数据保存下来,但是不保存密码,为了做到这一点公司的技术人员实现的Serializable接口,这是为什么呢?下面给出了代码,但是代码中缺少一些语句,请你给添加上。
 import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
 
 
public class Login implements Serializable {
       private Date date = new Date();
 
       private String username;
 
       private transient String password;
 
       public Login(String name, String pwd) {
              username = name;
              password = pwd;
       }
 
       public String toString() {
              String pwd = (password == null) ? "(n/a)" : password;
              return "Login info:/n username:" + username + "/n date:" + date
                            + "/n password:" + pwd;
       }
 
public static void main(String[] args) throws Exception{
 Login a=new Login("tianyi","easyjf");
 System.out.println("Login a="+a);
 ObjectOutputStream o=new ObjectOutputStream(new FileOutputStream("Login.out"));
 o.writeObject(a);
 o.close();
 Thread.sleep(1000);
 ObjectInputStream in=new ObjectInputStream(new FileInputStream("Login.out"));
 System.out.println("Recovering object at"+new Date());
 a=(Login)in.readObject();
 System.out.println("Login a="+a);
}}
, 这个题目就是对 java 基础的考察,不了解这个序列化接口的人们肯定解决不了这个问题,序列化接口大家都知道,他什么方法都没有,但是实现序列化接口的类,它包含 transient 关键字,只要实现这个关键字就能很好的控制字段,他可以逐个关闭序列化,用 Bruce Eckel 的话说“不用麻烦你保存或者恢复数据 ------- 我自己会处理的!”,这个题目就是考察这个简单的东西了,只要在 password 前面加上关键字 transient 就可以解决这个问题了!
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值