如何存储类的对象?

时间:2014-01-22 14:17:18

标签: java file object

我知道使用File class,我可以将存储在变量中的数据存储在硬盘上并稍后检索它们。 但有没有办法可以存储一个具有一些变量的类的对象 和方法,并在以后使用该对象。

让我们说类ClassA和ClassB是游戏的两个类:

public class classA{
  public int x,y,Vx,Vy ;
  public void move(){
     x +=Vx ;
     y +=Vy ;

}       ...     }

public claassB{
  classA c = new classA();

  while(1){

  c.move() ;
}

}

现在让我们说我点击保存按钮并关闭游戏,我重新运行并加载游戏
单击加载按钮。

所以当我加载游戏时,有什么方法可以存储“c”。将检索存储的对象,并从我离开的地方继续游戏。 实际上,而不是存储我想要存储对象的对象的变量。 所以我可以将对象传递给classB(单击加载按钮后)。

4 个答案:

答案 0 :(得分:3)

您可以使用序列化来序列化对象 - Java提供了一种称为对象序列化的机制,其中对象可以表示为包含对象数据的字节序列以及有关对象的信息#39; s类型和对象中存储的数据类型。 这是一个很好的例子。

public class Employee implements java.io.Serializable
{
   public String name;
   public String address;
   public transient int SSN;
   public int number;
   public void mailCheck()
   {
      System.out.println("Mailing a check to " + name
                           + " " + address);
   }
}

这里展示了如何使用:

import java.io.*;

public class SerializeDemo
{
   public static void main(String [] args)
   {
      Employee e = new Employee();
      e.name = "Reyan Ali";
      e.address = "Phokka Kuan, Ambehta Peer";
      e.SSN = 11122333;
      e.number = 101;
      try
      {
         FileOutputStream fileOut =
         new FileOutputStream("/tmp/employee.ser");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(e);
         out.close();
         fileOut.close();
         System.out.printf("Serialized data is saved in /tmp/employee.ser");
      }catch(IOException i)
      {
          i.printStackTrace();
      }
   }
}

检查文档以获取更多信息。也许您发现序列化是您的正确方法

示例来源:Tutorialspoint

答案 1 :(得分:1)

我认为您正在寻找SerializableObjectOutputStreamObjectInputStream

答案 2 :(得分:0)

我认为你的意思是你有一个包含变量和方法的C类,然后你想将所有这些存储在硬盘上,以便以后可以检索所有这些。

然后你应该看看Serializable的概念

http://en.wikipedia.org/wiki/Serialization#Java

答案 3 :(得分:0)

 public final static void writeObject(Object x,String name) throws IOException{


     try
        {

           FileOutputStream fileOut = new FileOutputStream(name+".ser");
           ObjectOutputStream out   = new ObjectOutputStream(fileOut);
           out.writeObject(x);
           out.close();
            fileOut.close();
        }catch(IOException i)
        {
            i.printStackTrace();
        }}


 public final static Object readObject(String filename) throws IOException, ClassNotFoundException{

     ArrayList oldlist = null;

      try
         {
            FileInputStream fileIn =   new FileInputStream(filename);
            ObjectInputStream in = new ObjectInputStream(fileIn);
            oldlist = (ArrayList) in.readObject();
            in.close();
            fileIn.close();
            return oldlist;
         }catch(IOException i)
         {

            writeObject(list, "list");
            update_list(current_link);
            System.exit(0);
            //i.printStackTrace();

              return 0;      
         }catch(ClassNotFoundException c)
         { 

            c.printStackTrace();
            return null;
         }}