如何创建一个 MarkupBuilder
类型,但具有使用 StringWriter
初始化的默认构造函数,并重写 toString()
来调用 StringWriter
上的 toString()
?
想法如下,但当然不允许在 super 构造函数调用之前初始化实例变量:
class StringWriterMarkupBuilder extends MarkupBuilder {
final def sw = new StringWriter()
StringWriterMarkupBuilder() {
super(sw)
}
@Override String toString() {
sw.toString()
}
}
最佳答案
抱歉,我终于通过深入研究 MarkupBuilder 的 Groovy 源代码找到了解决方案!:
class StringWriterMarkupBuilder extends MarkupBuilder {
StringWriterMarkupBuilder() {
//MarkupBuilder.this(new IndentPrinter(new PrintWriter(writer)))
super(new StringWriter())
}
@Override String toString() {
//IndentPrinter.PrintWriter.StringWriter
return super.getPrinter().out.out.toString()
}
}
关于groovy - 如何制作 "StringWriterMarkupBuilder",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665478/