开发者社区> 问答> 正文

序列化的private void readObjectNoData()怎么用?

大家谁能给我举个 private void readObjectNoData() throws ObjectStreamException这个的例子啊? 我自己试了半晌还是没试出来怎么用,不是成功反序列化就是抛出异常. 这个函数是怎么用的? 拜托大家了.

public class Test implements java.io.Serializable
{
    private String name ;
    private int age ;
    private double a ;
    public Test( String name , int age , double a)
    {
        this.name = name ;
        this.age = age ;
        this.a = a ;
    }
    private void writeObject(ObjectOutputStream out)throws IOException
    {
        System.out.println("writeOject") ;
        out.writeObject(new StringBuffer(name).reverse()) ;
        out.writeInt(age) ;
        out.writeDouble(a);
    }
    private void readObject(ObjectInputStream in) throws IOException , ClassNotFoundException
    {
        System.out.println("readOject") ;
        this.name = ( (StringBuffer)in.readObject() ).reverse().toString() ;
        this.a = in.readDouble() ;
        this.age = in.readInt() ;
    }
    private void readObjectNoData() throws ObjectStreamException
    {
        System.out.println("NoOject") ;
        this.name = "无名氏" ;
        this.age = 0 ;
        this.a = 99.9 ;
    }
    @Override
    public String toString()
    {
        return this.name + "\t" + age +"\t" + a ;
    }
    public static void main(String[] args) 
    {
        File tempfile = new File("./" , "Out.txt") ;
        try
        {
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(tempfile)) ;
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(tempfile)) ;
        //)
        //{
            if(!tempfile.exists())
            {
                tempfile.createNewFile() ;
            }
            Test a = new Test("测试" , 56 , 4.5) ;
            oos.writeObject(a) ;
            Test temp = (Test)ois.readObject() ;
            System.out.println(temp) ;
        }
        catch (Exception e)
        {
            e.printStackTrace() ;
        }
    }
}

这个是我没修改前的代码,拜托了

展开
收起
蛮大人123 2016-02-29 17:48:43 2877 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    代码运行了一下,发现write跟read成员时的顺序不对。
    read那里改下:

     private void readObject(ObjectInputStream in) throws IOException , ClassNotFoundException{
            System.out.println("readOject") ;
            this.name = ( (StringBuffer)in.readObject() ).reverse().toString() ;
            this.age = in.readInt() ;//这样就跟write时的顺序一致了        
            this.a = in.readDouble() ;
        }

    private void readObjectNoData()删掉也能运行的说。

    2019-07-17 18:50:44
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多