我有一个类,封装了一个StAX Writer,用于特定业务XML写入。您可以将一些领域对象推入其中,逻辑将生成相应的XML。
出于安全原因,我不想提供XMLStreamWriter实例,因此这个类是唯一负责向这个writer写入的类。XMLStreamWriter将在此类中被实例化。为了支持几乎所有输出变体,例如Result、OutputStream和Writer,我还提供了这些变体的构造函数。
出于安全原因,我不想提供XMLStreamWriter实例,因此这个类是唯一负责向这个writer写入的类。XMLStreamWriter将在此类中被实例化。为了支持几乎所有输出变体,例如Result、OutputStream和Writer,我还提供了这些变体的构造函数。
public CustomStreamWriter ([...], Result result) {
this([...], (Object) result);
}
public CustomStreamWriter ([...], OutputStream outputStream) {
this([...], (Object) outputStream);
}
public CustomStreamWriter ([...], Writer writer) {
this([...], (Object) writer);
}
protected CustomStreamWriter ([...], Object outputHandler) {
// Initialize some final fields and do some stuff with [...]
XMLOutputFactory factory = XMLOutputFactory.newInstance();
if(outputHandler instanceof OutputStream) {
this.writer = factory.createXMLStreamWriter((OutputStream) outputHandler);
} else if(outputHandler instanceof Result) {
this.writer = factory.createXMLStreamWriter((Result) outputHandler);
} else if(outputHandler instanceof Writer) {
this.writer = factory.createXMLStreamWriter((Writer) outputHandler);
}
}
当我看到这个时,我觉得它很丑,并不是一种整洁的实现方式。 Stack Overflow,你有什么提示吗?
newInstance
或createXMLStreamWriter
的所有错误都包装成自定义异常,这就是为什么我删除了我的答案。(这是一种企业标准,不一定是坏事)但如果没有这样的要求,这个方法应该可以工作。 - Nikita Rybak