【问题标题】:Java constructor with method that creates instance of that object具有创建该对象实例的方法的 Java 构造函数
【发布时间】:2012-05-03 10:50:52
【问题描述】:

我想创建将 xml 作为字符串的构造函数,所有变量都将从中填充。该 xml 是由 XStream 创建的,所以我认为这样的东西会起作用,但不知道要在左侧添加什么:

    public xmlpacket(String xml)
    {
        XStream xstream = new XStream(new DomDriver());
       .... =  (xmlpacket)xstream.fromXML(xml);
    }

谢谢

【问题讨论】:

标签: java xml constructor xstream


【解决方案1】:

您可以使用静态方法。

public static XMLPacket unmarshall(String xml) {
    XStream xstream = new XStream(new DomDriver());

    return (XMLPacket)xstream.fromXML(xml);

}

注意我是如何重命名你的班级的。现在它遵守 Java 命名约定。

【讨论】:

    【解决方案2】:

    如果你已经创建了你需要的类和这些类的 xstream 别名,那么

    XMLPacket packet = (XMLPacket)xstream.fromXML(xml);
    

    但您可能应该为此创建一个方法,而不是在构造函数中这样做。

    【讨论】:

      【解决方案3】:

      XStream 将为您创建对象的实例。因此,除非您想将 XStream 创建的数据包的所有属性复制到您正在构建的数据包中,否则在构造函数中这样做是没有意义的。改为创建工厂方法:

      public static XmlPacket fromXml(String xml) {
          XStream xstream = new XStream(new DomDriver());
          return (XmlPacket) xstream.fromXML(xml);
      }
      

      【讨论】:

        猜你喜欢
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 2013-05-21
        • 2021-03-05
        • 1970-01-01
        相关资源
        最近更新 更多