我所知道的是,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.
大侠们给点理想啊。          

解决方案 »

  1.   

    楼主不知道这世上有一种东西叫做重载吗?楼主好好看JDOM的API文档再说。output(Document doc, java.io.Writer out) 
              This will print the Document to the given Writer.
      

  2.   

    这跟重载有什么关系,我知道XMLOutputter里那几个output是方法的重载,但这个不是我问的东西啊,我是想问filewriter也outputstream的关系,
      

  3.   

    如果这个output(Document doc, java.io.Writer out) 函数你没写错,outputstream和filewriter应该是父类和子类的关系,很明显...
      

  4.   


    楼主点不透啊,必须得详细解释,那我就给你举个例子,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的重载呢?
      

  5.   

    上楼受教了,我看api时没看到output(Document doc, java.io.Writer out)这个方法,所以有次一问,如果有这方法,那就解释得通了,谢谢