我有两个关于java.awt.Shape
的问题。假设我有两个Shape
s,shape1
和shape2
。
如何以某种方式对它们进行序列化,以便将信息保存到文件中,然后在另一台计算机上重新创建? (Shape
不是Serializable
但它确实有getPathIterator()
方法,似乎你可以获取信息,但它会有点拖累+我不知道如何重建之后是Shape
个对象。)
如何将它们组合成一个新的形状,以便它们形成一个联合边界? (例如,如果shape1是一个大正方形而shape2是正方形内的一个小圆圈,我希望组合形状是一个带有小圆孔的大正方形)
答案 0 :(得分:2)
我相信您可以使用Shape
从路径信息重建java.awt.geom.Path2D.Double
。但是,它可能没有特定实现那么有效。
要在所有具有Shape
字段的类中没有特殊工作的情况下可以序列化,那么您需要确保所提供的Shape
的所有构造形状的可序列化子类,以初始化数据一个readObject
方法。如果有需要将数据发送到构造函数的情况,那么您将需要“串行代理”(在这种情况下我不认为这是必要的)。
序列化基础模型数据可能更好。 Shape
通常是短暂构建的。
答案 1 :(得分:0)
我想我找到了问题第二部分的答案:
Shape shape1, shape2;
shape1 = ...;
shape2 = ...;
Area area = new Area(shape1);
area.subtract(new Area(shape2));
// "area" is now a Shape that is the difference between the two shapes.