我知道使用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(单击加载按钮后)。
答案 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)
答案 2 :(得分:0)
我认为你的意思是你有一个包含变量和方法的C类,然后你想将所有这些存储在硬盘上,以便以后可以检索所有这些。
然后你应该看看Serializable的概念
答案 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;
}}