Java对象保存
我正在努力挽救相当大的班级 注: 我使用Java的ObjectOutputStream和ObjectInputStream进行保存和加载,其中在方法1 Integer[]中保存的是对象,在方法2中保存的是OutputStream/s缓冲区(字节[]) 我最想要的是:Java对象保存,java,performance,oop,serialization,binary,Java,Performance,Oop,Serialization,Binary,我正在努力挽救相当大的班级 注: 我使用Java的ObjectOutputStream和ObjectInputStream进行保存和加载,其中在方法1 Integer[]中保存的是对象,在方法2中保存的是OutputStream/s缓冲区(字节[]) 我最想要的是: 运行时快速保存和加载 容易让别人理解 添加或从类中删除后易于编辑 在以下两种方法中,保存java类型类的最佳方法是什么 方法1:(IOstreamSerialization是以下两种使用方法的接口) 方法2:(IoBinary是
- 运行时快速保存和加载
- 容易让别人理解
- 添加或从类中删除后易于编辑
公共最终类项实现IoBinary{
私有int-id;
私人整数金额;
公共项目(整数id、整数金额){
超级();
this.id=id;
这个。金额=金额;
}
@凌驾
公共void loadBinary(整数[]二进制){
id=二进制[0];
金额=二进制[1];
}
@凌驾
公共整数[]saveBinary(){
返回新整数[]{id,amount};
}
}
实现序列化(解决方案1)是大型类的最佳方式,在快速处理和检索方面在性能方面:“不要猜测,测量!”
但是,首先让它运行。如果速度够快,就停在那里。如果没有配置文件,则查找瓶颈
您最想要的是:
public final class Item implements IoStreamSerialization {
private int id;
private int amount;
public Item(int id, int amount) {
super();
this.id = id;
this.amount = amount;
}
@Override
public void loadInputStream(InputStream is) {
id = is.readUnsignedByte();
amount = is.readInt();
}
@Override
public OutputStream saveOutputStream() {
OutputStream os = new OutputStream(2);
os.writeByte(id);
os.writeInt(amount);
return os;
}
}
public final class Item implements IoBinary<Integer[]> {
private int id;
private int amount;
public Item(int id, int amount) {
super();
this.id = id;
this.amount = amount;
}
@Override
public void loadBinary(Integer[] binary) {
id = binary[0];
amount = binary[1];
}
@Override
public Integer[] saveBinary() {
return new Integer[] { id, amount };
}
}