gpt4 book ai didi

java - 如何序列化接口(interface)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:53 24 4
gpt4 key购买 nike

假设我有一个 SerializableShapeHolder,它拥有一个实现 Serializable Shape 接口(interface)的对象。我想确保保存了正确的具体形状对象(并且稍后恢复了正确的类型)。

我怎样才能做到这一点?

interface Shape extends Serializable {} 

class Circle implements Shape {
private static final long serialVersionUID = -1306760703066967345L;
}

class ShapeHolder implements Serializable {
private static final long serialVersionUID = 1952358793540268673L;
public Shape shape;
}

最佳答案

Java 的 Serializable 会自动为您做这件事。

public class SerializeInterfaceExample {

interface Shape extends Serializable {}
static class Circle implements Shape {
private static final long serialVersionUID = -1306760703066967345L;
}

static class ShapeHolder implements Serializable {
private static final long serialVersionUID = 1952358793540268673L;
public Shape shape;
}

@Test public void canSerializeShape()
throws FileNotFoundException, IOException, ClassNotFoundException {
ShapeHolder circleHolder = new ShapeHolder();
circleHolder.shape = new Circle();

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("test"));
out.writeObject(circleHolder);
out.close();

ObjectInputStream in = new ObjectInputStream(new FileInputStream("test"));
final ShapeHolder restoredCircleHolder = (ShapeHolder) in.readObject();
assertThat(restoredCircleHolder.shape, instanceOf(Circle.class));
in.close();
}
}

关于java - 如何序列化接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com