javafx.geometry.Point2D - 使其可序列化

时间:2016-03-05 11:48:08

标签: serialization geometry javafx-2

我目前发现javafx.geometry.Point2D不可序列化。 有没有办法可以自己为这个课程实现界面。

https://docs.oracle.com/javase/8/javafx/api/javafx/geometry/Point2D.html

1 个答案:

答案 0 :(得分:1)

您不能通过继承来实现,因为javafx.geometry.Point2D不提供无参数构造函数。您可以通过组合来完成,如下所示。这可能不方便因为getPoint()方法,另一种方法是重现您需要的任何Point2D接口。当我遇到这个时,我只使用了java.awt.Point2D.Double,它是Serializable,但当然没有javafx.geometry.Point2D的丰富界面。

class MyPoint2DByComposition implements Serializable {
   Point2D myPoint ;

   public MyPoint2DByComposition(double x, double y) {
      myPoint = new Point2D(x,y) ;
   }

   public Point2D getPoint() {
      return myPoint ;
   }

   private void writeObject(java.io.ObjectOutputStream out) 
   throws IOException {
      out.writeDouble(myPoint.getX());
      out.writeDouble(myPoint.getY());
   }

   private void readObject(java.io.ObjectInputStream in)
   throws IOException, ClassNotFoundException {
      myPoint = new Point2D(in.readDouble(), in.readDouble()) ;         
   }
}