0

我可以使用它的值创建一个路径吗?

 Path p=new Path();
 p.getElements().add(new MoveTo(mouse.getX(), mouse.getY()));
 System.out.Print(p);

这将打印

路径@29f12030

我可以再次将其转换为路径吗?

4

2 回答 2

1

我认为您应该在应用架构的上下文中详细说明通过网络发送数据的目的。给出一些关于它的基本细节。据我了解,您希望Path通过网络发送一个实例并能够在另一端处理它。如果是这样,
请查看序列化 API。阅读有关它的帖子“如何使用 java 通过网络传输对象”。扩展Path或将其包装到另一个类中,然后实现 Serializable。
- 或者,请参阅用于 XML 绑定的 Java 体系结构 (JAXB)。基本上通过使用它,您可以将对象转换/编组为 XML 字符串并通过网络传输,然后对其进行解组。这是你好世界的例子
- 或者,实现您自己的编码/解码机制来传输Path对象。

于 2012-04-19T08:24:29.687 回答
1

你已经创建了一个路径,它仍然是一个路径,你不需要转换它。

当您调用时,System.out.print(p)您调用对象上的默认toString函数p,该函数会打印对您的 Path 的内部 Java 引用(例如Path@29f12030)。如果您toString使用自己的实现覆盖默认方法,如下面的示例所示,您的打印语句将显示路径的值。

public class PrintPath extends Application {
  public static void main(String[] args) throws Exception { launch(args); }
  @Override public void start(final Stage stage) throws Exception {
    Path p = new PrintedPath();
    p.getElements().add(new MoveTo(100, 150));
    System.out.println(p);
    stage.setScene(new Scene(new StackPane()));
    stage.show();
  } 

  class PrintedPath extends Path {
    @Override public String toString() {
      StringBuilder b = new StringBuilder();
      for (PathElement e: getElements()) {
        if (e instanceof MoveTo) {
          MoveTo m = (MoveTo) e;
          b.append("M").append(m.getX()).append(" ").append(m.getY()).append(" ");
        }
        // logic to display other path element types could be added here . . .
      }
      return "Path{ " + b.toString() + "}";
    }
  }
}
于 2012-04-18T18:10:19.877 回答