【问题标题】: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);
}