private  int jiankang=Value.jiankang; //健康
      private  int jinqian=Value.jinqian; //金钱
      private  int nengli=Value.nengli; //能力
      private  int jingyan=Value.jingyan; //经验
      private  int kuaile=Value.kuaile; //心态
      private  int daode=Value.daode; //道德
      private  int jiaoji=Value.jiaoyi; //交际
      private  int nianling=Value.nianling; //年龄
      private  int yuefen=Value.yuefen; //剩余月份
      private  int guoquyuefen=Value.guoquyuefen; //已经过去的月份
      private  int gongzi=Value.gongzi; //工资
      private  int shijian=Value.shijian; //空闲时间
      private  int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
      private  int randomj=Value.randomj; //随机数0为加1为减。
      private  int random=Value.random; //随机加减股票指数值的存放处
      private  int yingkui; //盈亏率
      private  int gupiaozhishu=Value.gupiaozhishu;//股票指数
      private  int chigushoushu=Value.chigushoushu; //持股手数
      private  int jiaoyi=Value.jiaoyi; //交易的手数
      private  int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
      private  boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
      private  int Select=Value.Select; //选择播放哪首音乐
      private  boolean music=Value.music; //片场音乐是否播放
      private  int fangchanzhishu=Value.fangchanzhishu; //房产指数
      private  int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
      private  String zhiwu=Value.zhiwu; //职务
      private  String banlv=Value.banlv; //伴侣
      private  String qiche=Value.qiche; //汽车
      private  String fangzi=Value.fangzi; //房子

解决方案 »

  1.   

    帮忙把这个正反序列化一下我有些犯迷糊
    package mian;import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutput;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;public class SaveBean implements Serializable { private static final long serialVersionUID = 151176696117126296L;
    public static String path = "d:\\save.dat"; public static void save(Serializable saveData, String path2) throws FileNotFoundException, IOException {
            ObjectOutput output = new ObjectOutputStream(new FileOutputStream(path));
            output.writeObject(saveData);
            output.close();
        }    @SuppressWarnings("unused")
    public static SaveBean load(String path2) throws IOException, ClassNotFoundException {
            ObjectInputStream reader = new ObjectInputStream(new FileInputStream(path2));
            Object rawData = reader.readObject();
            reader.close();        return (SaveBean) rawData;
        }
          private  int jiankang=Value.jiankang; //健康
          private  int jinqian=Value.jinqian; //金钱
          private  int nengli=Value.nengli; //能力
          private  int jingyan=Value.jingyan; //经验
          private  int kuaile=Value.kuaile; //心态
          private  int daode=Value.daode; //道德
          private  int jiaoji=Value.jiaoyi; //交际
          private  int nianling=Value.nianling; //年龄
          private  int yuefen=Value.yuefen; //剩余月份
          private  int guoquyuefen=Value.guoquyuefen; //已经过去的月份
          private  int gongzi=Value.gongzi; //工资
          private  int shijian=Value.shijian; //空闲时间
          private  int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
          private  int randomj=Value.randomj; //随机数0为加1为减。
          private  int random=Value.random; //随机加减股票指数值的存放处
          private  int yingkui; //盈亏率
          private  int gupiaozhishu=Value.gupiaozhishu;//股票指数
          private  int chigushoushu=Value.chigushoushu; //持股手数
          private  int jiaoyi=Value.jiaoyi; //交易的手数
          private  int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
          private  boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
          private  int Select=Value.Select; //选择播放哪首音乐
          private  boolean music=Value.music; //片场音乐是否播放
          private  int fangchanzhishu=Value.fangchanzhishu; //房产指数
    //       private  int fangjia=80000; //1房1厅,房价基数
    //       private  int fangjia2=100000; //2房1厅,房价基数
    //       private  int fangjia3=200000; //2房2厅,房价基数
    //       private  int fangjia4=240000; //3房1厅,房价基数
    //       private  int fangjia5=300000; //3房2厅,房价基数
    //       private  int fangjia6=360000; //4房2厅,房价基数
    //       private  int fangjia7=1500000; //市郊别墅,房价基数
    //       private  int fangjia8=3000000; //城区别墅,房价基数
          private  int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
          private  String zhiwu=Value.zhiwu; //职务
          private  String banlv=Value.banlv; //伴侣
          private  String qiche=Value.qiche; //汽车
          private  String fangzi=Value.fangzi; //房子       public void setRandomj(int randomj) {
    this.randomj = randomj;
    }
          public int getGuoquyuefen() {
    return guoquyuefen;
    }
          public int getGupiaoshizhi() {
    return gupiaoshizhi;
    }
          public int getJinqian() {
    return jinqian;
    }
          public String getBanlv() {
           return banlv;
          }
          public int getChigushoushu() {
    return chigushoushu;
    }
          public int getDaode() {
    return daode;
    }
          public String getFangzi() {
    return fangzi;
    }
          public int getFangzileibie() {
    return fangzileibie;
    }
          public int getFangchanzhishu() {
    return fangchanzhishu;
    }
    public int getGongzi() {
    return gongzi;
    }
          public int getJiaoyi() {
    return jiaoyi;
    }
          public int getGupiaozhishu() {
    return gupiaozhishu;
    }
          public int getJiankang() {
    return jiankang;
    }
          public int getGongzuo() {
    return gongzuo;
    }
          public String getQiche() {
    return qiche;
    }
    //      public int getFangjia() {
    //        return fangjia;
    //       }
    //      public int getFangjia2() {
    // return fangjia2;
    // }
    //       public int getFangjia3() {
    // return fangjia3;
    // }
    //       public int getFangjia4() {
    // return fangjia4;
    // }
    //       public int getFangjia5() {
    // return fangjia5;
    // }
    //       public int getFangjia6() {
    // return fangjia6;
    // }
    //       public int getFangjia7() {
    // return fangjia7;
    // }
    //       public int getFangjia8() {
    // return fangjia8;
    //       }
          public int getJiaoji() {
    return jiaoji;
    }
          public int getJingyan() {
    return jingyan;
    }
          public int getKuaile() {
    return kuaile;
    }
          public int getNengli() {
    return nengli;
    }
          public int getNianling() {
    return nianling;
    }
          public int getRandom() {
    return random;
    }
          public int getRandomj() {
    return randomj;
    }
          public int getSelect() {
    return Select;
    }
          public int getShijian() {
    return shijian;
    }
          public int getYuefen() {
    return yuefen;
    }
          public int getYingkui() {
    return yingkui;
    }
          public boolean isBoy() {
    return boy;
    }
          public boolean isMusic() {
    return music;
    }
          public String getZhiwu() {
    return zhiwu;
    }
          public void setZhiwu(String zhiwu) {
    this.zhiwu = zhiwu;
    }
          public void setYuefen(int yuefen) {
    this.yuefen = yuefen;
    }
          public void setYingkui(int yingkui) {
    this.yingkui = yingkui;
    }
          public void setShijian(int shijian) {
    this.shijian = shijian;
    }
          public void setSelect(int select) {
    this.Select = select;
    }
          public void setRandom(int random) {
    this.random = random;
    }
          public void setQiche(String qiche) {
    this.qiche = qiche;
    }
          public void setNianling(int nianling) {
    this.nianling = nianling;
    }
          public void setNengli(int nengli) {
    this.nengli = nengli;
    }
          public void setMusic(boolean music) {
    this.music = music;
    }
          public void setKuaile(int kuaile) {
    this.kuaile = kuaile;
    }
          public void setJinqian(int jinqian) {
    this.jinqian = jinqian;
    }
          public void setJingyan(int jingyan) {
    this.jingyan = jingyan;
    }
          public void setJiaoyi(int jiaoyi) {
    this.jiaoyi = jiaoyi;
    }
          public void setJiaoji(int jiaoji) {
    this.jiaoji = jiaoji;
    }
          public void setJiankang(int jiankang) {
    this.jiankang = jiankang;
    }
          public void setGupiaozhishu(int gupiaozhishu) {
    this.gupiaozhishu = gupiaozhishu;
    }
          public void setGupiaoshizhi(int gupiaoshizhi) {
    this.gupiaoshizhi = gupiaoshizhi;
    }
          public void setGuoquyuefen(int guoquyuefen) {
    this.guoquyuefen = guoquyuefen;
    }
          public void setGongzi(int gongzi) {
    this.gongzi = gongzi;
    }
          public void setFangzileibie(int fangzileibie) {
    this.fangzileibie = fangzileibie;
    }
          public void setFangzi(String fangzi) {
    this.fangzi = fangzi;
    }
          public void setGongzuo(int gongzuo) {
    this.gongzuo = gongzuo;
    }
          public void setBanlv(String banlv) {
    this.banlv = banlv;
    }
          public void setBoy(boolean boy) {
    this.boy = boy;
    }
          public void setChigushoushu(int chigushoushu) {
    this.chigushoushu = chigushoushu;
    }
          public void setDaode(int daode) {
    this.daode = daode;
    }
          public void setFangchanzhishu(int fangchanzhishu) {
    this.fangchanzhishu = fangchanzhishu;
    }
    }
    新手上路,请不耐心赐教
      

  2.   


    //序列化
    ByteArrayOutputStream buf = new ByteArrayOutputStream();
    ObjectOutputStream o = new ObjectOutputStream(buf);
    o.writeObject(new SaveBean());
    ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray()));
    //反序列化
    SaveBeanser ser = null;
    try {
    ser = (SaveBean) in.readObject();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
      

  3.   

    拿到工具类里写多好啊
    public static void save(Serializable saveData, String path2) throws FileNotFoundException, IOException { 
            ObjectOutput output = new ObjectOutputStream(new FileOutputStream(path)); 
            output.writeObject(saveData); 
            output.close(); 
        }     @SuppressWarnings("unused") 
    public static SaveBean load(String path2) throws IOException, ClassNotFoundException { 
            ObjectInputStream reader = new ObjectInputStream(new FileInputStream(path2)); 
            Object rawData = reader.readObject(); 
            reader.close();         return (SaveBean) rawData; 
        } 
      

  4.   

    这个还是行不通啊,虽然编码没出错,我在菜单的actionPerformed
    激发事件SaveBean.save(saveBean, SaveBean.path);
    D盘也有那个DAT文件,但是读档后发现,没效果,要不把工程发给你看看?
      

  5.   

    to inkfish
    能不能完整修复下我的代码
      

  6.   

    网上找的,跟你的是一样一样的。java 代码import java.io.*;   
    public class   Box implements Serializable   
    {   
        private int width;   
        private int height;   
       
        public void setWidth(int width){   
            this.width   = width;   
         }   
        public void setHeight(int height){   
            this.height = height;   
         }   
       
        public static void main(String[] args){   
             Box myBox = new Box();   
             myBox.setWidth(50);   
             myBox.setHeight(30);   
       
            try{   
                 FileOutputStream fs = new FileOutputStream("foo.ser");   
                 ObjectOutputStream os =  new ObjectOutputStream(fs);   
                 os.writeObject(myBox);   
                 os.close();   
             }catch(Exception ex){   
                 ex.printStackTrace();   
             }   
         }   
           
    } //读取的代码类似这样的
    FileInputStream istream = new FileInputStream("foo.ser"); // 输入流
    ObjectInputStream pr = new ObjectInputStream(istream); // 绑定
    Box myBox2  = (Box)pr.readObject(); // 读入序列化的类
    istream.close();
    相关注意事项
        a)序列化时,只对对象的状态进行保存,而不管对象的方法;
         b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
        c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
        d)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:
            1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
           2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。
      

  7.   

    我现在想知道的是,我把int jinqian=Value.jinqian;这样的东西能序列化进去吗?
    就是说静态的Value.jinqian能存到非静态的jinqian吗?
      

  8.   

    存档时把int jinqian=Value.jinqian;可以
    读档是Value.jinqian=jinqian就不行了
      

  9.   

    调试已成功,代码发给大家看看
    package mian;import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;public class SaveBean implements Serializable { private static final long serialVersionUID = 151176696117126296L; public static void save(Serializable saveData) throws FileNotFoundException, IOException {        FileOutputStream fs = new FileOutputStream("foo.ser");
            ObjectOutputStream output =  new ObjectOutputStream(fs);
            output.writeObject(saveData);
            output.close();
        }    @SuppressWarnings("unused")
    public static SaveBean load() throws IOException, ClassNotFoundException {        FileInputStream istream = new FileInputStream("foo.ser"); // 输入流
            ObjectInputStream pr = new ObjectInputStream(istream); // 绑定
            SaveBean reader  = (SaveBean)pr.readObject(); // 读入序列化的类
            istream.close(); Value.jiankang=reader.jiankang; //健康
    Value.jinqian=reader.jinqian; //金钱
    Value.nengli=reader.nengli; //能力
    Value.jingyan=reader.jingyan; //经验
    Value.kuaile=reader.kuaile; //心态
    Value.daode=reader.daode; //道德
          Value.jiaoyi=reader.jiaoji; //交际
          Value.nianling=reader.nianling; //年龄
          Value.yuefen=reader.yuefen; //剩余月份
          Value.guoquyuefen=reader.guoquyuefen; //已经过去的月份
          Value.gongzi=reader.gongzi; //工资
          Value.shijian=reader.shijian; //空闲时间
          Value.gongzuo=reader.gongzuo; //根据一个月的工作时间计算所应得到的工资数
          Value.randomj=reader.randomj; //随机数0为加1为减。
          Value.random=reader.random; //随机加减股票指数值的存放处
          Value.gupiaozhishu=reader.gupiaozhishu;//股票指数
          Value.chigushoushu=reader.chigushoushu; //持股手数
          Value.jiaoyi=reader.jiaoyi; //交易的手数
          Value.gupiaoshizhi=reader.chigushoushu; //所持股票市值
          Value.boy=reader.boy; //主角为男孩是女,true为男,false为女.
          Value.Select=reader.Select; //选择播放哪首音乐
          Value.music=reader.music; //片场音乐是否播放
          Value.fangchanzhishu=reader.fangchanzhishu; //房产指数
          Value.fangzileibie=reader.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
          Value.zhiwu=reader.zhiwu; //职务
          Value.banlv=reader.banlv; //伴侣
          Value.qiche=reader.qiche; //汽车
          Value.fangzi=reader.fangzi; //房子
            return (SaveBean) reader;    }   public  int jiankang=Value.jiankang; //健康
        public  int jinqian=Value.jinqian; //金钱
        public  int nengli=Value.nengli; //能力
        public  int jingyan=Value.jingyan; //经验
      public  int kuaile=Value.kuaile; //心态
      public  int daode=Value.daode; //道德
      public  int jiaoji=Value.jiaoyi; //交际
      public  int nianling=Value.nianling; //年龄
      public  int yuefen=Value.yuefen; //剩余月份
      public  int guoquyuefen=Value.guoquyuefen; //已经过去的月份
      public  int gongzi=Value.gongzi; //工资
      public  int shijian=Value.shijian; //空闲时间
      public  int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
      public  int randomj=Value.randomj; //随机数0为加1为减。
      public  int random=Value.random; //随机加减股票指数值的存放处
      public  int gupiaozhishu=Value.gupiaozhishu;//股票指数
      public  int chigushoushu=Value.chigushoushu; //持股手数
      public  int jiaoyi=Value.jiaoyi; //交易的手数
      public  int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
      public  boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
      public  int Select=Value.Select; //选择播放哪首音乐
      public  boolean music=Value.music; //片场音乐是否播放
      public  int fangchanzhishu=Value.fangchanzhishu; //房产指数
      public  int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
      public  String zhiwu=Value.zhiwu; //职务
      public  String banlv=Value.banlv; //伴侣
      public  String qiche=Value.qiche; //汽车
      public  String fangzi=Value.fangzi; //房子   public int getJinqian() {
      return jinqian;
      }
          public int getGuoquyuefen() {
    return guoquyuefen;
    }
          public int getGupiaoshizhi() {
    return gupiaoshizhi;
    }
          public String getBanlv() {
           return banlv;
          }
          public int getChigushoushu() {
    return chigushoushu;
    }
          public int getDaode() {
    return daode;
    }
          public String getFangzi() {
    return fangzi;
    }
          public int getFangzileibie() {
    return fangzileibie;
    }
          public int getFangchanzhishu() {
    return fangchanzhishu;
    }
    public int getGongzi() {
    return gongzi;
    }
          public int getJiaoyi() {
    return jiaoyi;
    }
          public int getGupiaozhishu() {
    return gupiaozhishu;
    }
          public int getJiankang() {
    return jiankang;
    }
          public int getGongzuo() {
    return gongzuo;
    }
          public String getQiche() {
    return qiche;
    }
          public int getJiaoji() {
    return jiaoji;
    }
          public int getJingyan() {
    return jingyan;
    }
          public int getKuaile() {
    return kuaile;
    }
          public int getNengli() {
    return nengli;
    }
          public int getNianling() {
    return nianling;
    }
          public int getRandom() {
    return random;
    }
          public int getRandomj() {
    return randomj;
    }
          public int getSelect() {
    return Select;
    }
          public int getShijian() {
    return shijian;
    }
          public int getYuefen() {
    return yuefen;
    }       public boolean isBoy() {
    return boy;
    }
          public boolean isMusic() {
    return music;
    }
          public String getZhiwu() {
    return zhiwu;
    }
          public void setRandomj(int randomj) {
    this.randomj = randomj;
    }
          public void setZhiwu(String zhiwu) {
    this.zhiwu = zhiwu;
    }
          public void setYuefen(int yuefen) {
    this.yuefen = yuefen;
    }
          public void setShijian(int shijian) {
    this.shijian = shijian;
    }
          public void setSelect(int select) {
    this.Select = select;
    }
          public void setRandom(int random) {
    this.random = random;
    }
          public void setQiche(String qiche) {
    this.qiche = qiche;
    }
          public void setNianling(int nianling) {
    this.nianling = nianling;
    }
          public void setNengli(int nengli) {
    this.nengli = nengli;
    }
          public void setMusic(boolean music) {
    this.music = music;
    }
          public void setKuaile(int kuaile) {
    this.kuaile = kuaile;
    }
          public void setJinqian(int jinqian) {
    this.jinqian = jinqian;
    }
          public void setJingyan(int jingyan) {
    this.jingyan = jingyan;
    }
          public void setJiaoyi(int jiaoyi) {
    this.jiaoyi = jiaoyi;
    }
          public void setJiankang(int jiankang) {
    this.jiankang = jiankang;
    }
          public void setGupiaozhishu(int gupiaozhishu) {
    this.gupiaozhishu = gupiaozhishu;
    }
          public void setGupiaoshizhi(int gupiaoshizhi) {
    this.gupiaoshizhi = gupiaoshizhi;
    }
          public void setGuoquyuefen(int guoquyuefen) {
    this.guoquyuefen = guoquyuefen;
    }
          public void setGongzi(int gongzi) {
    this.gongzi = gongzi;
    }
          public void setFangzileibie(int fangzileibie) {
    this.fangzileibie = fangzileibie;
    }
          public void setFangzi(String fangzi) {
    this.fangzi = fangzi;
    }
          public void setGongzuo(int gongzuo) {
    this.gongzuo = gongzuo;
    }
          public void setBanlv(String banlv) {
    this.banlv = banlv;
    }
          public void setBoy(boolean boy) {
    this.boy = boy;
    }
          public void setChigushoushu(int chigushoushu) {
    this.chigushoushu = chigushoushu;
    }
          public void setDaode(int daode) {
    this.daode = daode;
    }
          public void setFangchanzhishu(int fangchanzhishu) {
    this.fangchanzhishu = fangchanzhishu;
    }}触发存储的事件
    private JMenuItem getSavaMenuItem() {
    if (savaMenuItem == null) {
    savaMenuItem = new JMenuItem();
    savaMenuItem.setText("存储游戏");
    savaMenuItem.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
    SaveBean s=new SaveBean();
    try {
    SaveBean .save(s);
    System.out.println(""+s.jinqian+Value.jinqian);
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    } });
    }
    return savaMenuItem;
    }触发读取的事件
    private JMenuItem getLoadMenuItem() {
    if (loadMenuItem == null) {
    loadMenuItem = new JMenuItem();
    loadMenuItem.setText("读取游戏");
    loadMenuItem.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
    SaveBean l=new SaveBean();
    System.out.println("load: " + l.jinqian);
    try {
    SaveBean.load();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    }
    });
    }
    return loadMenuItem;
    }