我所知道的是,filewriter是字符流而outputstream是字节流,那么outputstream的对象实例应该不能赋值给filewriter才对啊。可是事实上是可以的。public void writerXML(Document doc,String filename)
{
XMLOutputter xo=new XMLOutputter();
try {
xo.output(doc, new FileWriter(new File(filename)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}output(Document doc, java.io.OutputStream out)
This will print the Document to the given output stream.
大侠们给点理想啊。
{
XMLOutputter xo=new XMLOutputter();
try {
xo.output(doc, new FileWriter(new File(filename)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}output(Document doc, java.io.OutputStream out)
This will print the Document to the given output stream.
大侠们给点理想啊。
This will print the Document to the given Writer.
楼主点不透啊,必须得详细解释,那我就给你举个例子,System.out.println()里面不管是传boolean、byte、char、short、int、long、float、double都不会编译错误,难道说这些类型都可以相互转换?显然不是,是因为System.out.println()有10来个重载,如果不针对每种类型写一个重载,肯定会编译错误。回到楼主这个问题,FileWriter和OutputStream除了都是从Object继承而来,没什么关系,也就是说应该传OutputStream为参数的地方用了FileWriter肯定是要编译错误的,而楼主却发现并没有报错,因为楼主传了一个FileWriter是继承自Writer,而JDOM文档里面明明白白地写着output(Document doc, java.io.Writer out) 有这种重载,你传一个FileWriter过来,根本就不是调用的output(Document doc, java.io.OutputStream out)这种重载的方法,而是调用的output(Document doc, java.io.Writer out)这种重载,这当然编译通得过。所以根本问题是楼主对什么是重载,什么是运行时绑定理解不深刻,你传进去一个FileWriter为什么就只能是调用OutputStream的重载而不可能是调用Writer的重载呢?