1

我有两个关于java.awt.Shape. 假设我有两个Shapesshape1shape2

  1. 如何以某种方式对它们进行序列化,以便将信息保存到文件中,然后在另一台计算机上重新创建?(Shape不是Serializable,但它确实具有getPathIterator()似乎您可以获取信息的方法,但这会有点拖累+我不确定Shape之后如何重建对象。)

  2. 我怎样才能将它们组合成一个新的形状,以便它们形成一个联合边界?(例如,如果 shape1 是一个大正方形,而 shape2 是正方形内的一个小圆圈,我希望组合的形状是一个带有小圆孔的大正方形)

4

2 回答 2

2

我相信您可以Shape使用java.awt.geom.Path2D.Double. 但是,它可能不如特定实现有效。

要在没有特殊工作的情况下从所有具有 aShape作为字段的类中进行序列化,那么您需要确保所有构造的形状都可序列化所提供的 s 的子类,从而在方法Shape中初始化数据。readObject如果在某些情况下您需要向构造函数发送数据,那么您将需要“串行代理”(我认为在这种情况下没有必要)。

序列化底层模型数据可能会更好。Shapes 通常是临时构建的。

于 2010-03-18T14:41:07.760 回答
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.
于 2010-03-18T19:58:19.180 回答