1

について2つ質問がありjava.awt.Shapeます。2 つShapeの とshape1があるとしshape2ます。

  1. 情報をファイルに保存し、後で別のコンピューターで再作成できるように、それらを何らかの方法でシリアル化するにはどうすればよいですか? (ShapeそうではありませんSerializableが、情報を取得できるように見える方法がありますが、それは一種のドラッグになります+後でオブジェクトgetPathIterator()を再構築する方法がわかりません。)Shape

  2. それらを新しい形状に結合して、ジョイント境界を形成するにはどうすればよいですか? (たとえば、shape1 が大きな正方形で、shape2 が正方形の内側の小さな円である場合、結合された形状を小さな円形の穴のある大きな正方形にしたい)

4

2 に答える 2

2

Shapeでパス情報から再構築できると思いますjava.awt.geom.Path2D.Double。ただし、特定の実装ほど効率的ではない場合があります。

をフィールドとして持つすべてのクラスから特別な作業なしでシリアライズ可能にするには、メソッド内のデータを初期化するShape、提供された s のすべての構築されたシェイプがシリアライズ可能なサブクラスであることを確認する必要があります。コンストラクターにデータを送信する必要がある場合は、「シリアル プロキシ」が必要になります (この場合は必要ないと思います)。ShapereadObject

基になるモデル データをシリアル化する方がよい場合があります。Shapes は一般に一時的に構築されます。

于 2010-03-18T14:41:07.760 に答える
0

私の質問の2番目の部分に対する答えを見つけたと思います:

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 に答える